Full Code of aniyomiorg/aniyomi for AI

main 2f5cf775c4d9 cached
1961 files
13.7 MB
3.7M tokens
1 requests
Copy disabled (too large) Download .txt
Showing preview only (14,906K chars total). Download the full file to get everything.
Repository: aniyomiorg/aniyomi
Branch: main
Commit: 2f5cf775c4d9
Files: 1961
Total size: 13.7 MB

Directory structure:
gitextract_glkkya1o/

├── .editorconfig
├── .gitattributes
├── .github/
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── config.yml
│   │   ├── report_issue.yml
│   │   └── request_feature.yml
│   ├── pull_request_template.md
│   ├── renovate.json5
│   └── workflows/
│       ├── build_pull_request.yml
│       └── build_push.yml
├── .gitignore
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── app/
│   ├── .idea/
│   │   ├── .gitignore
│   │   ├── .name
│   │   ├── discord.xml
│   │   ├── gradle.xml
│   │   ├── misc.xml
│   │   └── vcs.xml
│   ├── build.gradle.kts
│   ├── proguard-android-optimize.txt
│   ├── proguard-rules.pro
│   ├── shortcuts.xml
│   └── src/
│       ├── debug/
│       │   └── res/
│       │       ├── drawable/
│       │       │   └── ic_launcher_foreground.xml
│       │       └── mipmap/
│       │           ├── ic_launcher.xml
│       │           └── ic_launcher_round.xml
│       ├── main/
│       │   ├── AndroidManifest.xml
│       │   ├── assets/
│       │   │   └── aniyomi.lua
│       │   ├── baseline-prof.txt
│       │   ├── java/
│       │   │   ├── aniyomi/
│       │   │   │   └── util/
│       │   │   │       └── DataSaver.kt
│       │   │   ├── eu/
│       │   │   │   └── kanade/
│       │   │   │       ├── core/
│       │   │   │       │   ├── preference/
│       │   │   │       │   │   ├── CheckboxState.kt
│       │   │   │       │   │   └── PreferenceMutableState.kt
│       │   │   │       │   └── util/
│       │   │   │       │       ├── AnimeSourceUtil.kt
│       │   │   │       │       ├── CollectionUtils.kt
│       │   │   │       │       ├── MangaSourceUtil.kt
│       │   │   │       │       └── RxJavaExtensions.kt
│       │   │   │       ├── domain/
│       │   │   │       │   ├── DomainModule.kt
│       │   │   │       │   ├── SYDomainModule.kt
│       │   │   │       │   ├── base/
│       │   │   │       │   │   ├── BasePreferences.kt
│       │   │   │       │   │   └── ExtensionInstallerPreference.kt
│       │   │   │       │   ├── download/
│       │   │   │       │   │   ├── anime/
│       │   │   │       │   │   │   └── interactor/
│       │   │   │       │   │   │       └── DeleteEpisodeDownload.kt
│       │   │   │       │   │   └── manga/
│       │   │   │       │   │       └── interactor/
│       │   │   │       │   │           └── DeleteChapterDownload.kt
│       │   │   │       │   ├── entries/
│       │   │   │       │   │   ├── anime/
│       │   │   │       │   │   │   ├── interactor/
│       │   │   │       │   │   │   │   ├── SetAnimeViewerFlags.kt
│       │   │   │       │   │   │   │   ├── SyncSeasonsWithSource.kt
│       │   │   │       │   │   │   │   └── UpdateAnime.kt
│       │   │   │       │   │   │   └── model/
│       │   │   │       │   │   │       └── Anime.kt
│       │   │   │       │   │   └── manga/
│       │   │   │       │   │       ├── interactor/
│       │   │   │       │   │       │   ├── GetExcludedScanlators.kt
│       │   │   │       │   │       │   ├── SetExcludedScanlators.kt
│       │   │   │       │   │       │   ├── SetMangaViewerFlags.kt
│       │   │   │       │   │       │   └── UpdateManga.kt
│       │   │   │       │   │       └── model/
│       │   │   │       │   │           └── Manga.kt
│       │   │   │       │   ├── extension/
│       │   │   │       │   │   ├── anime/
│       │   │   │       │   │   │   ├── interactor/
│       │   │   │       │   │   │   │   ├── GetAnimeExtensionLanguages.kt
│       │   │   │       │   │   │   │   ├── GetAnimeExtensionSources.kt
│       │   │   │       │   │   │   │   ├── GetAnimeExtensionsByType.kt
│       │   │   │       │   │   │   │   └── TrustAnimeExtension.kt
│       │   │   │       │   │   │   └── model/
│       │   │   │       │   │   │       └── AnimeExtensions.kt
│       │   │   │       │   │   └── manga/
│       │   │   │       │   │       ├── interactor/
│       │   │   │       │   │       │   ├── GetMangaExtensionLanguages.kt
│       │   │   │       │   │       │   ├── GetMangaExtensionSources.kt
│       │   │   │       │   │       │   ├── GetMangaExtensionsByType.kt
│       │   │   │       │   │       │   └── TrustMangaExtension.kt
│       │   │   │       │   │       └── model/
│       │   │   │       │   │           └── MangaExtensions.kt
│       │   │   │       │   ├── items/
│       │   │   │       │   │   ├── chapter/
│       │   │   │       │   │   │   ├── interactor/
│       │   │   │       │   │   │   │   ├── GetAvailableScanlators.kt
│       │   │   │       │   │   │   │   ├── SetReadStatus.kt
│       │   │   │       │   │   │   │   └── SyncChaptersWithSource.kt
│       │   │   │       │   │   │   └── model/
│       │   │   │       │   │   │       ├── Chapter.kt
│       │   │   │       │   │   │       └── ChapterFilter.kt
│       │   │   │       │   │   └── episode/
│       │   │   │       │   │       ├── interactor/
│       │   │   │       │   │       │   ├── SetSeenStatus.kt
│       │   │   │       │   │       │   └── SyncEpisodesWithSource.kt
│       │   │   │       │   │       └── model/
│       │   │   │       │   │           ├── Episode.kt
│       │   │   │       │   │           └── EpisodeFilter.kt
│       │   │   │       │   ├── source/
│       │   │   │       │   │   ├── anime/
│       │   │   │       │   │   │   ├── interactor/
│       │   │   │       │   │   │   │   ├── GetAnimeIncognitoState.kt
│       │   │   │       │   │   │   │   ├── GetAnimeSourcesWithFavoriteCount.kt
│       │   │   │       │   │   │   │   ├── GetEnabledAnimeSources.kt
│       │   │   │       │   │   │   │   ├── GetLanguagesWithAnimeSources.kt
│       │   │   │       │   │   │   │   ├── ToggleAnimeIncognito.kt
│       │   │   │       │   │   │   │   ├── ToggleAnimeSource.kt
│       │   │   │       │   │   │   │   └── ToggleAnimeSourcePin.kt
│       │   │   │       │   │   │   └── model/
│       │   │   │       │   │   │       └── AnimeSource.kt
│       │   │   │       │   │   ├── interactor/
│       │   │   │       │   │   │   ├── SetMigrateSorting.kt
│       │   │   │       │   │   │   └── ToggleLanguage.kt
│       │   │   │       │   │   ├── manga/
│       │   │   │       │   │   │   ├── interactor/
│       │   │   │       │   │   │   │   ├── GetEnabledMangaSources.kt
│       │   │   │       │   │   │   │   ├── GetLanguagesWithMangaSources.kt
│       │   │   │       │   │   │   │   ├── GetMangaIncognitoState.kt
│       │   │   │       │   │   │   │   ├── GetMangaSourcesWithFavoriteCount.kt
│       │   │   │       │   │   │   │   ├── ToggleExcludeFromMangaDataSaver.kt
│       │   │   │       │   │   │   │   ├── ToggleMangaIncognito.kt
│       │   │   │       │   │   │   │   ├── ToggleMangaSource.kt
│       │   │   │       │   │   │   │   └── ToggleMangaSourcePin.kt
│       │   │   │       │   │   │   └── model/
│       │   │   │       │   │   │       └── MangaSource.kt
│       │   │   │       │   │   └── service/
│       │   │   │       │   │       └── SourcePreferences.kt
│       │   │   │       │   ├── track/
│       │   │   │       │   │   ├── anime/
│       │   │   │       │   │   │   ├── interactor/
│       │   │   │       │   │   │   │   ├── AddAnimeTracks.kt
│       │   │   │       │   │   │   │   ├── RefreshAnimeTracks.kt
│       │   │   │       │   │   │   │   ├── SyncEpisodeProgressWithTrack.kt
│       │   │   │       │   │   │   │   └── TrackEpisode.kt
│       │   │   │       │   │   │   ├── model/
│       │   │   │       │   │   │   │   └── AnimeTrack.kt
│       │   │   │       │   │   │   ├── service/
│       │   │   │       │   │   │   │   └── DelayedAnimeTrackingUpdateJob.kt
│       │   │   │       │   │   │   └── store/
│       │   │   │       │   │   │       └── DelayedAnimeTrackingStore.kt
│       │   │   │       │   │   ├── manga/
│       │   │   │       │   │   │   ├── interactor/
│       │   │   │       │   │   │   │   ├── AddMangaTracks.kt
│       │   │   │       │   │   │   │   ├── RefreshMangaTracks.kt
│       │   │   │       │   │   │   │   ├── SyncChapterProgressWithTrack.kt
│       │   │   │       │   │   │   │   └── TrackChapter.kt
│       │   │   │       │   │   │   ├── model/
│       │   │   │       │   │   │   │   └── MangaTrack.kt
│       │   │   │       │   │   │   ├── service/
│       │   │   │       │   │   │   │   └── DelayedMangaTrackingUpdateJob.kt
│       │   │   │       │   │   │   └── store/
│       │   │   │       │   │   │       └── DelayedMangaTrackingStore.kt
│       │   │   │       │   │   ├── model/
│       │   │   │       │   │   │   └── AutoTrackState.kt
│       │   │   │       │   │   └── service/
│       │   │   │       │   │       └── TrackPreferences.kt
│       │   │   │       │   └── ui/
│       │   │   │       │       ├── UiPreferences.kt
│       │   │   │       │       └── model/
│       │   │   │       │           ├── AppTheme.kt
│       │   │   │       │           ├── NavStyle.kt
│       │   │   │       │           ├── StartScreen.kt
│       │   │   │       │           ├── TabletUiMode.kt
│       │   │   │       │           └── ThemeMode.kt
│       │   │   │       ├── presentation/
│       │   │   │       │   ├── browse/
│       │   │   │       │   │   ├── BaseBrowseItem.kt
│       │   │   │       │   │   ├── BrowseBadges.kt
│       │   │   │       │   │   ├── BrowseSourceDialogs.kt
│       │   │   │       │   │   ├── BrowseSourceLoadingItem.kt
│       │   │   │       │   │   ├── GlobalSearchResultItems.kt
│       │   │   │       │   │   ├── GlobalSerachCard.kt
│       │   │   │       │   │   ├── anime/
│       │   │   │       │   │   │   ├── AnimeExtensionDetailsScreen.kt
│       │   │   │       │   │   │   ├── AnimeExtensionFilterScreen.kt
│       │   │   │       │   │   │   ├── AnimeExtensionsScreen.kt
│       │   │   │       │   │   │   ├── AnimeSourcesFilterScreen.kt
│       │   │   │       │   │   │   ├── AnimeSourcesScreen.kt
│       │   │   │       │   │   │   ├── BrowseAnimeSourceScreen.kt
│       │   │   │       │   │   │   ├── GlobalAnimeSearchScreen.kt
│       │   │   │       │   │   │   ├── MigrateAnimeScreen.kt
│       │   │   │       │   │   │   ├── MigrateAnimeSearchScreen.kt
│       │   │   │       │   │   │   ├── MigrateAnimeSourceScreen.kt
│       │   │   │       │   │   │   └── components/
│       │   │   │       │   │   │       ├── BaseAnimeSourceItem.kt
│       │   │   │       │   │   │       ├── BrowseAnimeIcons.kt
│       │   │   │       │   │   │       ├── BrowseAnimeSourceComfortableGrid.kt
│       │   │   │       │   │   │       ├── BrowseAnimeSourceCompactGrid.kt
│       │   │   │       │   │   │       ├── BrowseAnimeSourceList.kt
│       │   │   │       │   │   │       ├── BrowseAnimeSourceToolbar.kt
│       │   │   │       │   │   │       ├── GlobalAnimeSearchCardRow.kt
│       │   │   │       │   │   │       └── GlobalAnimeSearchToolbar.kt
│       │   │   │       │   │   └── manga/
│       │   │   │       │   │       ├── BrowseMangaSourceScreen.kt
│       │   │   │       │   │       ├── GlobalMangaSearchScreen.kt
│       │   │   │       │   │       ├── MangaExtensionDetailsScreen.kt
│       │   │   │       │   │       ├── MangaExtensionFilterScreen.kt
│       │   │   │       │   │       ├── MangaExtensionsScreen.kt
│       │   │   │       │   │       ├── MangaSourcesFilterScreen.kt
│       │   │   │       │   │       ├── MangaSourcesScreen.kt
│       │   │   │       │   │       ├── MigrateMangaScreen.kt
│       │   │   │       │   │       ├── MigrateMangaSearchScreen.kt
│       │   │   │       │   │       ├── MigrateMangaSourceScreen.kt
│       │   │   │       │   │       └── components/
│       │   │   │       │   │           ├── BaseMangaSourceItem.kt
│       │   │   │       │   │           ├── BrowseMangaIcons.kt
│       │   │   │       │   │           ├── BrowseMangaSourceComfortableGrid.kt
│       │   │   │       │   │           ├── BrowseMangaSourceCompactGrid.kt
│       │   │   │       │   │           ├── BrowseMangaSourceList.kt
│       │   │   │       │   │           ├── BrowseMangaSourceToolbar.kt
│       │   │   │       │   │           ├── GlobalMangaSearchCardRow.kt
│       │   │   │       │   │           └── GlobalMangaSearchToolbar.kt
│       │   │   │       │   ├── category/
│       │   │   │       │   │   ├── AnimeCategoryScreen.kt
│       │   │   │       │   │   ├── CategoryExtensions.kt
│       │   │   │       │   │   ├── MangaCategoryScreen.kt
│       │   │   │       │   │   └── components/
│       │   │   │       │   │       ├── CategoryDialogs.kt
│       │   │   │       │   │       ├── CategoryFloatingActionButton.kt
│       │   │   │       │   │       └── CategoryListItem.kt
│       │   │   │       │   ├── components/
│       │   │   │       │   │   ├── AdaptiveSheet.kt
│       │   │   │       │   │   ├── AppBar.kt
│       │   │   │       │   │   ├── Banners.kt
│       │   │   │       │   │   ├── DateText.kt
│       │   │   │       │   │   ├── DropdownMenu.kt
│       │   │   │       │   │   ├── EmptyScreen.kt
│       │   │   │       │   │   ├── EntryDownloadDropdownMenu.kt
│       │   │   │       │   │   ├── FloatingActionAddButton.kt
│       │   │   │       │   │   ├── ItemDownloadIndicator.kt
│       │   │   │       │   │   ├── TabbedDialog.kt
│       │   │   │       │   │   └── TabbedScreen.kt
│       │   │   │       │   ├── crash/
│       │   │   │       │   │   └── CrashScreen.kt
│       │   │   │       │   ├── entries/
│       │   │   │       │   │   ├── EntryScreenConstants.kt
│       │   │   │       │   │   ├── anime/
│       │   │   │       │   │   │   ├── AnimeScreen.kt
│       │   │   │       │   │   │   ├── DuplicateAnimeDialog.kt
│       │   │   │       │   │   │   ├── EpisodeOptionsDialogScreen.kt
│       │   │   │       │   │   │   ├── EpisodeSettingsDialog.kt
│       │   │   │       │   │   │   ├── SeasonSettingsDialog.kt
│       │   │   │       │   │   │   └── components/
│       │   │   │       │   │   │       ├── AnimeEpisodeListItem.kt
│       │   │   │       │   │   │       ├── AnimeImagesDialog.kt
│       │   │   │       │   │   │       ├── AnimeInfoHeader.kt
│       │   │   │       │   │   │       ├── AnimeSeasonListItem.kt
│       │   │   │       │   │   │       ├── BaseAnimeListItem.kt
│       │   │   │       │   │   │       └── EpisodeDownloadIndicator.kt
│       │   │   │       │   │   ├── components/
│       │   │   │       │   │   │   ├── DotSeparatorText.kt
│       │   │   │       │   │   │   ├── EntryBottomActionMenu.kt
│       │   │   │       │   │   │   ├── EntryToolbar.kt
│       │   │   │       │   │   │   ├── ItemCover.kt
│       │   │   │       │   │   │   ├── ItemHeader.kt
│       │   │   │       │   │   │   ├── ItemsDialogs.kt
│       │   │   │       │   │   │   └── MissingItemCountListItem.kt
│       │   │   │       │   │   └── manga/
│       │   │   │       │   │       ├── ChapterSettingsDialog.kt
│       │   │   │       │   │       ├── DuplicateMangaDialog.kt
│       │   │   │       │   │       ├── MangaScreen.kt
│       │   │   │       │   │       └── components/
│       │   │   │       │   │           ├── BaseMangaListItem.kt
│       │   │   │       │   │           ├── ChapterDownloadIndicator.kt
│       │   │   │       │   │           ├── MangaChapterListItem.kt
│       │   │   │       │   │           ├── MangaCoverDialog.kt
│       │   │   │       │   │           ├── MangaInfoHeader.kt
│       │   │   │       │   │           └── ScanlatorFilterDialog.kt
│       │   │   │       │   ├── history/
│       │   │   │       │   │   ├── HistoryDialogs.kt
│       │   │   │       │   │   ├── anime/
│       │   │   │       │   │   │   ├── AnimeHistoryScreen.kt
│       │   │   │       │   │   │   ├── AnimeHistoryScreenModelStateProvider.kt
│       │   │   │       │   │   │   └── components/
│       │   │   │       │   │   │       ├── AnimeHistoryItem.kt
│       │   │   │       │   │   │       └── AnimeHistoryWithRelationsProvider.kt
│       │   │   │       │   │   └── manga/
│       │   │   │       │   │       ├── MangaHistoryScreen.kt
│       │   │   │       │   │       ├── MangaHistoryScreenModelStateProvider.kt
│       │   │   │       │   │       └── components/
│       │   │   │       │   │           ├── MangaHistoryItem.kt
│       │   │   │       │   │           └── MangaHistoryWithRelationsProvider.kt
│       │   │   │       │   ├── library/
│       │   │   │       │   │   ├── DeleteLibraryEntryDialog.kt
│       │   │   │       │   │   ├── anime/
│       │   │   │       │   │   │   ├── AnimeLibraryComfortableGrid.kt
│       │   │   │       │   │   │   ├── AnimeLibraryCompactGrid.kt
│       │   │   │       │   │   │   ├── AnimeLibraryContent.kt
│       │   │   │       │   │   │   ├── AnimeLibraryList.kt
│       │   │   │       │   │   │   ├── AnimeLibraryPager.kt
│       │   │   │       │   │   │   └── AnimeLibrarySettingsDialog.kt
│       │   │   │       │   │   ├── components/
│       │   │   │       │   │   │   ├── CommonEntryItem.kt
│       │   │   │       │   │   │   ├── GlobalSearchItem.kt
│       │   │   │       │   │   │   ├── LazyLibraryGrid.kt
│       │   │   │       │   │   │   ├── LibraryBadges.kt
│       │   │   │       │   │   │   ├── LibraryTabs.kt
│       │   │   │       │   │   │   └── LibraryToolbar.kt
│       │   │   │       │   │   └── manga/
│       │   │   │       │   │       ├── MangaLibraryComfortableGrid.kt
│       │   │   │       │   │       ├── MangaLibraryCompactGrid.kt
│       │   │   │       │   │       ├── MangaLibraryContent.kt
│       │   │   │       │   │       ├── MangaLibraryList.kt
│       │   │   │       │   │       ├── MangaLibraryPager.kt
│       │   │   │       │   │       └── MangaLibrarySettingsDialog.kt
│       │   │   │       │   ├── more/
│       │   │   │       │   │   ├── LogoHeader.kt
│       │   │   │       │   │   ├── MoreScreen.kt
│       │   │   │       │   │   ├── NewUpdateScreen.kt
│       │   │   │       │   │   ├── onboarding/
│       │   │   │       │   │   │   ├── GuidesStep.kt
│       │   │   │       │   │   │   ├── OnboardingScreen.kt
│       │   │   │       │   │   │   ├── OnboardingStep.kt
│       │   │   │       │   │   │   ├── PermissionStep.kt
│       │   │   │       │   │   │   ├── StorageStep.kt
│       │   │   │       │   │   │   └── ThemeStep.kt
│       │   │   │       │   │   ├── settings/
│       │   │   │       │   │   │   ├── Preference.kt
│       │   │   │       │   │   │   ├── PreferenceItem.kt
│       │   │   │       │   │   │   ├── PreferenceScaffold.kt
│       │   │   │       │   │   │   ├── PreferenceScreen.kt
│       │   │   │       │   │   │   ├── screen/
│       │   │   │       │   │   │   │   ├── Commons.kt
│       │   │   │       │   │   │   │   ├── SearchableSettings.kt
│       │   │   │       │   │   │   │   ├── SettingsAdvancedScreen.kt
│       │   │   │       │   │   │   │   ├── SettingsAppearanceScreen.kt
│       │   │   │       │   │   │   │   ├── SettingsBrowseScreen.kt
│       │   │   │       │   │   │   │   ├── SettingsDataScreen.kt
│       │   │   │       │   │   │   │   ├── SettingsDownloadScreen.kt
│       │   │   │       │   │   │   │   ├── SettingsLibraryScreen.kt
│       │   │   │       │   │   │   │   ├── SettingsMainScreen.kt
│       │   │   │       │   │   │   │   ├── SettingsReaderScreen.kt
│       │   │   │       │   │   │   │   ├── SettingsSearchScreen.kt
│       │   │   │       │   │   │   │   ├── SettingsSecurityScreen.kt
│       │   │   │       │   │   │   │   ├── SettingsTrackingScreen.kt
│       │   │   │       │   │   │   │   ├── about/
│       │   │   │       │   │   │   │   │   ├── AboutScreen.kt
│       │   │   │       │   │   │   │   │   ├── OpenSourceLibraryLicenseScreen.kt
│       │   │   │       │   │   │   │   │   └── OpenSourceLicensesScreen.kt
│       │   │   │       │   │   │   │   ├── advanced/
│       │   │   │       │   │   │   │   │   ├── ClearAnimeDatabaseScreen.kt
│       │   │   │       │   │   │   │   │   └── ClearDatabaseScreen.kt
│       │   │   │       │   │   │   │   ├── appearance/
│       │   │   │       │   │   │   │   │   └── AppLanguageScreen.kt
│       │   │   │       │   │   │   │   ├── browse/
│       │   │   │       │   │   │   │   │   ├── AnimeExtensionReposScreen.kt
│       │   │   │       │   │   │   │   │   ├── AnimeExtensionReposScreenModel.kt
│       │   │   │       │   │   │   │   │   ├── MangaExtensionReposScreen.kt
│       │   │   │       │   │   │   │   │   ├── MangaExtensionReposScreenModel.kt
│       │   │   │       │   │   │   │   │   └── components/
│       │   │   │       │   │   │   │   │       ├── ExtensionReposContent.kt
│       │   │   │       │   │   │   │   │       ├── ExtensionReposDialogs.kt
│       │   │   │       │   │   │   │   │       └── ExtensionReposScreen.kt
│       │   │   │       │   │   │   │   ├── data/
│       │   │   │       │   │   │   │   │   ├── CreateBackupScreen.kt
│       │   │   │       │   │   │   │   │   ├── RestoreBackupScreen.kt
│       │   │   │       │   │   │   │   │   └── StorageInfo.kt
│       │   │   │       │   │   │   │   ├── debug/
│       │   │   │       │   │   │   │   │   ├── BackupSchemaScreen.kt
│       │   │   │       │   │   │   │   │   ├── DebugInfoScreen.kt
│       │   │   │       │   │   │   │   │   └── WorkerInfoScreen.kt
│       │   │   │       │   │   │   │   └── player/
│       │   │   │       │   │   │   │       ├── PlayerSettingsAdvancedScreen.kt
│       │   │   │       │   │   │   │       ├── PlayerSettingsAudioScreen.kt
│       │   │   │       │   │   │   │       ├── PlayerSettingsDecoderScreen.kt
│       │   │   │       │   │   │   │       ├── PlayerSettingsGesturesScreen.kt
│       │   │   │       │   │   │   │       ├── PlayerSettingsMainScreen.kt
│       │   │   │       │   │   │   │       ├── PlayerSettingsPlayerScreen.kt
│       │   │   │       │   │   │   │       ├── PlayerSettingsSubtitleScreen.kt
│       │   │   │       │   │   │   │       ├── custombutton/
│       │   │   │       │   │   │   │       │   ├── PlayerSettingsCustomButtonScreen.kt
│       │   │   │       │   │   │   │       │   ├── PlayerSettingsCustomButtonScreenModel.kt
│       │   │   │       │   │   │   │       │   └── components/
│       │   │   │       │   │   │   │       │       ├── CustomButtonDialogs.kt
│       │   │   │       │   │   │   │       │       ├── CustomButtonListItem.kt
│       │   │   │       │   │   │   │       │       └── CustomButtonScreen.kt
│       │   │   │       │   │   │   │       └── editor/
│       │   │   │       │   │   │   │           ├── PlayerSettingsEditorScreen.kt
│       │   │   │       │   │   │   │           ├── PlayerSettingsEditorScreenModel.kt
│       │   │   │       │   │   │   │           ├── codeeditor/
│       │   │   │       │   │   │   │           │   ├── CodeEditScreen.kt
│       │   │   │       │   │   │   │           │   ├── CodeEditScreenModel.kt
│       │   │   │       │   │   │   │           │   ├── Highlight.kt
│       │   │   │       │   │   │   │           │   └── SyntaxHighlight.kt
│       │   │   │       │   │   │   │           └── components/
│       │   │   │       │   │   │   │               ├── EditorDialogs.kt
│       │   │   │       │   │   │   │               ├── EditorScreen.kt
│       │   │   │       │   │   │   │               └── EditorTypeDropdown.kt
│       │   │   │       │   │   │   └── widget/
│       │   │   │       │   │   │       ├── AppThemeModePreferenceWidget.kt
│       │   │   │       │   │   │       ├── AppThemePreferenceWidget.kt
│       │   │   │       │   │   │       ├── BasePreferenceWidget.kt
│       │   │   │       │   │   │       ├── EditTextPreferenceWidget.kt
│       │   │   │       │   │   │       ├── InfoWidget.kt
│       │   │   │       │   │   │       ├── ListPreferenceWidget.kt
│       │   │   │       │   │   │       ├── MultiSelectListPreferenceWidget.kt
│       │   │   │       │   │   │       ├── PreferenceGroupHeader.kt
│       │   │   │       │   │   │       ├── SwitchPreferenceWidget.kt
│       │   │   │       │   │   │       ├── TextPreferenceWidget.kt
│       │   │   │       │   │   │       ├── TrackingPreferenceWidget.kt
│       │   │   │       │   │   │       └── TriStateListDialog.kt
│       │   │   │       │   │   ├── stats/
│       │   │   │       │   │   │   ├── AnimeStatsScreenContent.kt
│       │   │   │       │   │   │   ├── MangaStatsScreenContent.kt
│       │   │   │       │   │   │   ├── StatsScreenState.kt
│       │   │   │       │   │   │   ├── components/
│       │   │   │       │   │   │   │   └── StatsItem.kt
│       │   │   │       │   │   │   └── data/
│       │   │   │       │   │   │       └── StatsData.kt
│       │   │   │       │   │   └── storage/
│       │   │   │       │   │       ├── CumulativeStorage.kt
│       │   │   │       │   │       ├── SelectStorageCategory.kt
│       │   │   │       │   │       ├── StorageItem.kt
│       │   │   │       │   │       ├── StorageScreenContent.kt
│       │   │   │       │   │       └── StorageScreenState.kt
│       │   │   │       │   ├── player/
│       │   │   │       │   │   └── components/
│       │   │   │       │   │       ├── ExpandableCard.kt
│       │   │   │       │   │       ├── ExposedTextDropDownMenu.kt
│       │   │   │       │   │       ├── OutlinedNumericChooser.kt
│       │   │   │       │   │       ├── OvalBox.kt
│       │   │   │       │   │       ├── PlayerSheet.kt
│       │   │   │       │   │       ├── RepeatingIconButton.kt
│       │   │   │       │   │       ├── SliderItem.kt
│       │   │   │       │   │       ├── SwitchPreference.kt
│       │   │   │       │   │       └── TintedSliderItem.kt
│       │   │   │       │   ├── reader/
│       │   │   │       │   │   ├── ChapterTransition.kt
│       │   │   │       │   │   ├── DisplayRefreshHost.kt
│       │   │   │       │   │   ├── OrientationSelectDialog.kt
│       │   │   │       │   │   ├── PageIndicatorText.kt
│       │   │   │       │   │   ├── ReaderContentOverlay.kt
│       │   │   │       │   │   ├── ReaderPageActionsDialog.kt
│       │   │   │       │   │   ├── ReadingModeSelectDialog.kt
│       │   │   │       │   │   ├── appbars/
│       │   │   │       │   │   │   ├── BottomReaderBar.kt
│       │   │   │       │   │   │   └── ReaderAppBars.kt
│       │   │   │       │   │   ├── components/
│       │   │   │       │   │   │   ├── ChapterNavigator.kt
│       │   │   │       │   │   │   └── ModeSelectionDialog.kt
│       │   │   │       │   │   └── settings/
│       │   │   │       │   │       ├── ColorFilterPage.kt
│       │   │   │       │   │       ├── GeneralSettingsPage.kt
│       │   │   │       │   │       ├── ReaderSettingsDialog.kt
│       │   │   │       │   │       └── ReadingModePage.kt
│       │   │   │       │   ├── theme/
│       │   │   │       │   │   ├── TachiyomiTheme.kt
│       │   │   │       │   │   └── colorscheme/
│       │   │   │       │   │       ├── BaseColorScheme.kt
│       │   │   │       │   │       ├── CloudflareColorScheme.kt
│       │   │   │       │   │       ├── CottoncandyColorScheme.kt
│       │   │   │       │   │       ├── DoomColorScheme.kt
│       │   │   │       │   │       ├── GreenAppleColorScheme.kt
│       │   │   │       │   │       ├── LavenderColorScheme.kt
│       │   │   │       │   │       ├── MatrixColorScheme.kt
│       │   │   │       │   │       ├── MidnightDuskColorScheme.kt
│       │   │   │       │   │       ├── MochaColorScheme.kt
│       │   │   │       │   │       ├── MonetColorScheme.kt
│       │   │   │       │   │       ├── MonochromeColorScheme.kt
│       │   │   │       │   │       ├── NordColorScheme.kt
│       │   │   │       │   │       ├── SapphireColorScheme.kt
│       │   │   │       │   │       ├── StrawberryColorScheme.kt
│       │   │   │       │   │       ├── TachiyomiColorScheme.kt
│       │   │   │       │   │       ├── TakoColorScheme.kt
│       │   │   │       │   │       ├── TealTurqoiseColorScheme.kt
│       │   │   │       │   │       ├── TidalWaveColorScheme.kt
│       │   │   │       │   │       ├── YinYangColorScheme.kt
│       │   │   │       │   │       └── YotsubaColorScheme.kt
│       │   │   │       │   ├── track/
│       │   │   │       │   │   ├── TrackInfoDialogSelector.kt
│       │   │   │       │   │   ├── anime/
│       │   │   │       │   │   │   ├── AnimeTrackInfoDialogHome.kt
│       │   │   │       │   │   │   ├── AnimeTrackInfoDialogHomePreviewProvider.kt
│       │   │   │       │   │   │   ├── AnimeTrackerSearch.kt
│       │   │   │       │   │   │   └── AnimeTrackerSearchPreviewProvider.kt
│       │   │   │       │   │   ├── components/
│       │   │   │       │   │   │   ├── TrackLogoIcon.kt
│       │   │   │       │   │   │   └── TrackLogoIconPreviewProvider.kt
│       │   │   │       │   │   └── manga/
│       │   │   │       │   │       ├── MangaTrackInfoDialogHome.kt
│       │   │   │       │   │       ├── MangaTrackInfoDialogHomePreviewProvider.kt
│       │   │   │       │   │       ├── MangaTrackerSearch.kt
│       │   │   │       │   │       └── MangaTrackerSearchPreviewProvider.kt
│       │   │   │       │   ├── updates/
│       │   │   │       │   │   ├── UpdatesDialog.kt
│       │   │   │       │   │   ├── anime/
│       │   │   │       │   │   │   ├── AnimeUpdatesScreen.kt
│       │   │   │       │   │   │   └── AnimeUpdatesUiItem.kt
│       │   │   │       │   │   └── manga/
│       │   │   │       │   │       ├── MangaUpdatesScreen.kt
│       │   │   │       │   │       └── MangaUpdatesUiItem.kt
│       │   │   │       │   ├── util/
│       │   │   │       │   │   ├── ExceptionFormatter.kt
│       │   │   │       │   │   ├── FastScrollAnimateItem.kt
│       │   │   │       │   │   ├── ItemNumberFormatter.kt
│       │   │   │       │   │   ├── Navigator.kt
│       │   │   │       │   │   ├── Permissions.kt
│       │   │   │       │   │   ├── Resources.kt
│       │   │   │       │   │   ├── TimeUtils.kt
│       │   │   │       │   │   └── WindowSize.kt
│       │   │   │       │   └── webview/
│       │   │   │       │       └── WebViewScreenContent.kt
│       │   │   │       ├── tachiyomi/
│       │   │   │       │   ├── App.kt
│       │   │   │       │   ├── AppInfo.kt
│       │   │   │       │   ├── crash/
│       │   │   │       │   │   ├── CrashActivity.kt
│       │   │   │       │   │   └── GlobalExceptionHandler.kt
│       │   │   │       │   ├── data/
│       │   │   │       │   │   ├── backup/
│       │   │   │       │   │   │   ├── BackupDecoder.kt
│       │   │   │       │   │   │   ├── BackupDetector.kt
│       │   │   │       │   │   │   ├── BackupFileValidator.kt
│       │   │   │       │   │   │   ├── BackupNotifier.kt
│       │   │   │       │   │   │   ├── create/
│       │   │   │       │   │   │   │   ├── BackupCreateJob.kt
│       │   │   │       │   │   │   │   ├── BackupCreator.kt
│       │   │   │       │   │   │   │   ├── BackupOptions.kt
│       │   │   │       │   │   │   │   └── creators/
│       │   │   │       │   │   │   │       ├── AnimeBackupCreator.kt
│       │   │   │       │   │   │   │       ├── AnimeCategoriesBackupCreator.kt
│       │   │   │       │   │   │   │       ├── AnimeExtensionRepoBackupCreator.kt
│       │   │   │       │   │   │   │       ├── AnimeSourcesBackupCreator.kt
│       │   │   │       │   │   │   │       ├── CustomButtonBackupCreator.kt
│       │   │   │       │   │   │   │       ├── ExtensionsBackupCreator.kt
│       │   │   │       │   │   │   │       ├── MangaBackupCreator.kt
│       │   │   │       │   │   │   │       ├── MangaCategoriesBackupCreator.kt
│       │   │   │       │   │   │   │       ├── MangaExtensionRepoBackupCreator.kt
│       │   │   │       │   │   │   │       ├── MangaSourcesBackupCreator.kt
│       │   │   │       │   │   │   │       └── PreferenceBackupCreator.kt
│       │   │   │       │   │   │   ├── full/
│       │   │   │       │   │   │   │   └── models/
│       │   │   │       │   │   │   │       ├── Backup.kt
│       │   │   │       │   │   │   │       └── BackupPreference.kt
│       │   │   │       │   │   │   ├── models/
│       │   │   │       │   │   │   │   ├── Backup.kt
│       │   │   │       │   │   │   │   ├── BackupAnime.kt
│       │   │   │       │   │   │   │   ├── BackupAnimeHistory.kt
│       │   │   │       │   │   │   │   ├── BackupAnimeSource.kt
│       │   │   │       │   │   │   │   ├── BackupAnimeTracking.kt
│       │   │   │       │   │   │   │   ├── BackupCategory.kt
│       │   │   │       │   │   │   │   ├── BackupChapter.kt
│       │   │   │       │   │   │   │   ├── BackupCustomButtons.kt
│       │   │   │       │   │   │   │   ├── BackupEpisode.kt
│       │   │   │       │   │   │   │   ├── BackupExtension.kt
│       │   │   │       │   │   │   │   ├── BackupExtensionPreferences.kt
│       │   │   │       │   │   │   │   ├── BackupExtensionRepos.kt
│       │   │   │       │   │   │   │   ├── BackupHistory.kt
│       │   │   │       │   │   │   │   ├── BackupManga.kt
│       │   │   │       │   │   │   │   ├── BackupPreference.kt
│       │   │   │       │   │   │   │   ├── BackupSource.kt
│       │   │   │       │   │   │   │   └── BackupTracking.kt
│       │   │   │       │   │   │   └── restore/
│       │   │   │       │   │   │       ├── BackupRestoreJob.kt
│       │   │   │       │   │   │       ├── BackupRestorer.kt
│       │   │   │       │   │   │       ├── RestoreOptions.kt
│       │   │   │       │   │   │       └── restorers/
│       │   │   │       │   │   │           ├── AnimeCategoriesRestorer.kt
│       │   │   │       │   │   │           ├── AnimeExtensionRepoRestorer.kt
│       │   │   │       │   │   │           ├── AnimeRestorer.kt
│       │   │   │       │   │   │           ├── CustomButtonRestorer.kt
│       │   │   │       │   │   │           ├── ExtensionsRestorer.kt
│       │   │   │       │   │   │           ├── MangaCategoriesRestorer.kt
│       │   │   │       │   │   │           ├── MangaExtensionRepoRestorer.kt
│       │   │   │       │   │   │           ├── MangaRestorer.kt
│       │   │   │       │   │   │           └── PreferenceRestorer.kt
│       │   │   │       │   │   ├── cache/
│       │   │   │       │   │   │   ├── AnimeBackgroundCache.kt
│       │   │   │       │   │   │   ├── AnimeCoverCache.kt
│       │   │   │       │   │   │   ├── ChapterCache.kt
│       │   │   │       │   │   │   └── MangaCoverCache.kt
│       │   │   │       │   │   ├── coil/
│       │   │   │       │   │   │   ├── AnimeCoverKeyer.kt
│       │   │   │       │   │   │   ├── AnimeImageFetcher.kt
│       │   │   │       │   │   │   ├── BufferedSourceFetcher.kt
│       │   │   │       │   │   │   ├── MangaCoverFetcher.kt
│       │   │   │       │   │   │   ├── MangaCoverKeyer.kt
│       │   │   │       │   │   │   ├── TachiyomiImageDecoder.kt
│       │   │   │       │   │   │   └── Utils.kt
│       │   │   │       │   │   ├── database/
│       │   │   │       │   │   │   └── models/
│       │   │   │       │   │   │       ├── anime/
│       │   │   │       │   │   │       │   ├── AnimeTrack.kt
│       │   │   │       │   │   │       │   ├── AnimeTrackImpl.kt
│       │   │   │       │   │   │       │   ├── Episode.kt
│       │   │   │       │   │   │       │   └── EpisodeImpl.kt
│       │   │   │       │   │   │       └── manga/
│       │   │   │       │   │   │           ├── Chapter.kt
│       │   │   │       │   │   │           ├── ChapterImpl.kt
│       │   │   │       │   │   │           ├── MangaTrack.kt
│       │   │   │       │   │   │           └── MangaTrackImpl.kt
│       │   │   │       │   │   ├── download/
│       │   │   │       │   │   │   ├── anime/
│       │   │   │       │   │   │   │   ├── AnimeDownloadCache.kt
│       │   │   │       │   │   │   │   ├── AnimeDownloadJob.kt
│       │   │   │       │   │   │   │   ├── AnimeDownloadManager.kt
│       │   │   │       │   │   │   │   ├── AnimeDownloadNotifier.kt
│       │   │   │       │   │   │   │   ├── AnimeDownloadPendingDeleter.kt
│       │   │   │       │   │   │   │   ├── AnimeDownloadProvider.kt
│       │   │   │       │   │   │   │   ├── AnimeDownloadStore.kt
│       │   │   │       │   │   │   │   ├── AnimeDownloader.kt
│       │   │   │       │   │   │   │   └── model/
│       │   │   │       │   │   │   │       ├── AnimeDownload.kt
│       │   │   │       │   │   │   │       └── AnimeDownloadPart.kt
│       │   │   │       │   │   │   └── manga/
│       │   │   │       │   │   │       ├── MangaDownloadCache.kt
│       │   │   │       │   │   │       ├── MangaDownloadJob.kt
│       │   │   │       │   │   │       ├── MangaDownloadManager.kt
│       │   │   │       │   │   │       ├── MangaDownloadNotifier.kt
│       │   │   │       │   │   │       ├── MangaDownloadPendingDeleter.kt
│       │   │   │       │   │   │       ├── MangaDownloadProvider.kt
│       │   │   │       │   │   │       ├── MangaDownloadStore.kt
│       │   │   │       │   │   │       ├── MangaDownloader.kt
│       │   │   │       │   │   │       └── model/
│       │   │   │       │   │   │           └── MangaDownload.kt
│       │   │   │       │   │   ├── export/
│       │   │   │       │   │   │   └── LibraryExporter.kt
│       │   │   │       │   │   ├── library/
│       │   │   │       │   │   │   ├── anime/
│       │   │   │       │   │   │   │   ├── AnimeLibraryUpdateJob.kt
│       │   │   │       │   │   │   │   ├── AnimeLibraryUpdateNotifier.kt
│       │   │   │       │   │   │   │   └── AnimeMetadataUpdateJob.kt
│       │   │   │       │   │   │   └── manga/
│       │   │   │       │   │   │       ├── MangaLibraryUpdateJob.kt
│       │   │   │       │   │   │       ├── MangaLibraryUpdateNotifier.kt
│       │   │   │       │   │   │       └── MangaMetadataUpdateJob.kt
│       │   │   │       │   │   ├── notification/
│       │   │   │       │   │   │   ├── NotificationHandler.kt
│       │   │   │       │   │   │   ├── NotificationReceiver.kt
│       │   │   │       │   │   │   └── Notifications.kt
│       │   │   │       │   │   ├── preference/
│       │   │   │       │   │   │   └── SharedPreferencesDataStore.kt
│       │   │   │       │   │   ├── saver/
│       │   │   │       │   │   │   └── ImageSaver.kt
│       │   │   │       │   │   ├── track/
│       │   │   │       │   │   │   ├── AnimeTracker.kt
│       │   │   │       │   │   │   ├── BaseTracker.kt
│       │   │   │       │   │   │   ├── DeletableAnimeTracker.kt
│       │   │   │       │   │   │   ├── DeletableMangaTracker.kt
│       │   │   │       │   │   │   ├── EnhancedAnimeTracker.kt
│       │   │   │       │   │   │   ├── EnhancedMangaTracker.kt
│       │   │   │       │   │   │   ├── MangaTracker.kt
│       │   │   │       │   │   │   ├── Tracker.kt
│       │   │   │       │   │   │   ├── TrackerManager.kt
│       │   │   │       │   │   │   ├── anilist/
│       │   │   │       │   │   │   │   ├── Anilist.kt
│       │   │   │       │   │   │   │   ├── AnilistApi.kt
│       │   │   │       │   │   │   │   ├── AnilistInterceptor.kt
│       │   │   │       │   │   │   │   ├── AnilistUtils.kt
│       │   │   │       │   │   │   │   └── dto/
│       │   │   │       │   │   │   │       ├── ALAddEntry.kt
│       │   │   │       │   │   │   │       ├── ALAnime.kt
│       │   │   │       │   │   │   │       ├── ALFuzzyDate.kt
│       │   │   │       │   │   │   │       ├── ALManga.kt
│       │   │   │       │   │   │   │       ├── ALOAuth.kt
│       │   │   │       │   │   │   │       ├── ALSearch.kt
│       │   │   │       │   │   │   │       ├── ALSearchItem.kt
│       │   │   │       │   │   │   │       ├── ALUser.kt
│       │   │   │       │   │   │   │       └── ALUserList.kt
│       │   │   │       │   │   │   ├── bangumi/
│       │   │   │       │   │   │   │   ├── Bangumi.kt
│       │   │   │       │   │   │   │   ├── BangumiApi.kt
│       │   │   │       │   │   │   │   ├── BangumiInterceptor.kt
│       │   │   │       │   │   │   │   ├── BangumiUtils.kt
│       │   │   │       │   │   │   │   └── dto/
│       │   │   │       │   │   │   │       ├── BGMCollectionResponse.kt
│       │   │   │       │   │   │   │       ├── BGMOAuth.kt
│       │   │   │       │   │   │   │       ├── BGMSearch.kt
│       │   │   │       │   │   │   │       └── BGMUser.kt
│       │   │   │       │   │   │   ├── jellyfin/
│       │   │   │       │   │   │   │   ├── Jellyfin.kt
│       │   │   │       │   │   │   │   ├── JellyfinApi.kt
│       │   │   │       │   │   │   │   ├── JellyfinInterceptor.kt
│       │   │   │       │   │   │   │   └── dto/
│       │   │   │       │   │   │   │       └── JFItem.kt
│       │   │   │       │   │   │   ├── kavita/
│       │   │   │       │   │   │   │   ├── Kavita.kt
│       │   │   │       │   │   │   │   ├── KavitaApi.kt
│       │   │   │       │   │   │   │   ├── KavitaInterceptor.kt
│       │   │   │       │   │   │   │   └── KavitaModels.kt
│       │   │   │       │   │   │   ├── kitsu/
│       │   │   │       │   │   │   │   ├── Kitsu.kt
│       │   │   │       │   │   │   │   ├── KitsuApi.kt
│       │   │   │       │   │   │   │   ├── KitsuDateHelper.kt
│       │   │   │       │   │   │   │   ├── KitsuInterceptor.kt
│       │   │   │       │   │   │   │   ├── KitsuUtils.kt
│       │   │   │       │   │   │   │   └── dto/
│       │   │   │       │   │   │   │       ├── KitsuAddEntry.kt
│       │   │   │       │   │   │   │       ├── KitsuListSearch.kt
│       │   │   │       │   │   │   │       ├── KitsuOAuth.kt
│       │   │   │       │   │   │   │       ├── KitsuSearch.kt
│       │   │   │       │   │   │   │       ├── KitsuSearchItemCover.kt
│       │   │   │       │   │   │   │       └── KitsuUser.kt
│       │   │   │       │   │   │   ├── komga/
│       │   │   │       │   │   │   │   ├── Komga.kt
│       │   │   │       │   │   │   │   ├── KomgaApi.kt
│       │   │   │       │   │   │   │   └── KomgaModels.kt
│       │   │   │       │   │   │   ├── mangaupdates/
│       │   │   │       │   │   │   │   ├── MangaUpdates.kt
│       │   │   │       │   │   │   │   ├── MangaUpdatesApi.kt
│       │   │   │       │   │   │   │   ├── MangaUpdatesInterceptor.kt
│       │   │   │       │   │   │   │   └── dto/
│       │   │   │       │   │   │   │       ├── MUContext.kt
│       │   │   │       │   │   │   │       ├── MUImage.kt
│       │   │   │       │   │   │   │       ├── MUListItem.kt
│       │   │   │       │   │   │   │       ├── MULoginResponse.kt
│       │   │   │       │   │   │   │       ├── MURating.kt
│       │   │   │       │   │   │   │       ├── MURecord.kt
│       │   │   │       │   │   │   │       ├── MUSearch.kt
│       │   │   │       │   │   │   │       ├── MUSeries.kt
│       │   │   │       │   │   │   │       ├── MUStatus.kt
│       │   │   │       │   │   │   │       └── MUUrl.kt
│       │   │   │       │   │   │   ├── model/
│       │   │   │       │   │   │   │   ├── AnimeTrackSearch.kt
│       │   │   │       │   │   │   │   └── MangaTrackSearch.kt
│       │   │   │       │   │   │   ├── myanimelist/
│       │   │   │       │   │   │   │   ├── MyAnimeList.kt
│       │   │   │       │   │   │   │   ├── MyAnimeListApi.kt
│       │   │   │       │   │   │   │   ├── MyAnimeListInterceptor.kt
│       │   │   │       │   │   │   │   ├── MyAnimeListUtils.kt
│       │   │   │       │   │   │   │   └── dto/
│       │   │   │       │   │   │   │       ├── MALAnime.kt
│       │   │   │       │   │   │   │       ├── MALList.kt
│       │   │   │       │   │   │   │       ├── MALManga.kt
│       │   │   │       │   │   │   │       ├── MALOAuth.kt
│       │   │   │       │   │   │   │       ├── MALSearch.kt
│       │   │   │       │   │   │   │       ├── MALUser.kt
│       │   │   │       │   │   │   │       └── MALUserListSearch.kt
│       │   │   │       │   │   │   ├── shikimori/
│       │   │   │       │   │   │   │   ├── Shikimori.kt
│       │   │   │       │   │   │   │   ├── ShikimoriApi.kt
│       │   │   │       │   │   │   │   ├── ShikimoriInterceptor.kt
│       │   │   │       │   │   │   │   ├── ShikimoriUtils.kt
│       │   │   │       │   │   │   │   └── dto/
│       │   │   │       │   │   │   │       ├── SMAddEntryResponse.kt
│       │   │   │       │   │   │   │       ├── SMEntry.kt
│       │   │   │       │   │   │   │       ├── SMOAuth.kt
│       │   │   │       │   │   │   │       ├── SMUser.kt
│       │   │   │       │   │   │   │       └── SMUserListEntry.kt
│       │   │   │       │   │   │   ├── simkl/
│       │   │   │       │   │   │   │   ├── Simkl.kt
│       │   │   │       │   │   │   │   ├── SimklApi.kt
│       │   │   │       │   │   │   │   ├── SimklInterceptor.kt
│       │   │   │       │   │   │   │   ├── SimklUtils.kt
│       │   │   │       │   │   │   │   └── dto/
│       │   │   │       │   │   │   │       ├── SimklOAuth.kt
│       │   │   │       │   │   │   │       ├── SimklSearch.kt
│       │   │   │       │   │   │   │       ├── SimklSyncItem.kt
│       │   │   │       │   │   │   │       ├── SimklSyncWatched.kt
│       │   │   │       │   │   │   │       └── SimklUser.kt
│       │   │   │       │   │   │   └── suwayomi/
│       │   │   │       │   │   │       ├── Suwayomi.kt
│       │   │   │       │   │   │       ├── SuwayomiApi.kt
│       │   │   │       │   │   │       └── SuwayomiModels.kt
│       │   │   │       │   │   └── updater/
│       │   │   │       │   │       ├── AppUpdateChecker.kt
│       │   │   │       │   │       ├── AppUpdateDownloadJob.kt
│       │   │   │       │   │       └── AppUpdateNotifier.kt
│       │   │   │       │   ├── di/
│       │   │   │       │   │   ├── AppModule.kt
│       │   │   │       │   │   └── PreferenceModule.kt
│       │   │   │       │   ├── extension/
│       │   │   │       │   │   ├── ExtensionUpdateNotifier.kt
│       │   │   │       │   │   ├── InstallStep.kt
│       │   │   │       │   │   ├── anime/
│       │   │   │       │   │   │   ├── AnimeExtensionManager.kt
│       │   │   │       │   │   │   ├── api/
│       │   │   │       │   │   │   │   └── AnimeExtensionApi.kt
│       │   │   │       │   │   │   ├── installer/
│       │   │   │       │   │   │   │   ├── InstallerAnime.kt
│       │   │   │       │   │   │   │   ├── PackageInstallerInstallerAnime.kt
│       │   │   │       │   │   │   │   └── ShizukuInstallerAnime.kt
│       │   │   │       │   │   │   ├── model/
│       │   │   │       │   │   │   │   ├── AnimeExtension.kt
│       │   │   │       │   │   │   │   └── AnimeLoadResult.kt
│       │   │   │       │   │   │   └── util/
│       │   │   │       │   │   │       ├── AnimeExtensionInstallActivity.kt
│       │   │   │       │   │   │       ├── AnimeExtensionInstallReceiver.kt
│       │   │   │       │   │   │       ├── AnimeExtensionInstallService.kt
│       │   │   │       │   │   │       ├── AnimeExtensionInstaller.kt
│       │   │   │       │   │   │       └── AnimeExtensionLoader.kt
│       │   │   │       │   │   └── manga/
│       │   │   │       │   │       ├── MangaExtensionManager.kt
│       │   │   │       │   │       ├── api/
│       │   │   │       │   │       │   └── MangaExtensionApi.kt
│       │   │   │       │   │       ├── installer/
│       │   │   │       │   │       │   ├── InstallerManga.kt
│       │   │   │       │   │       │   ├── PackageInstallerInstallerManga.kt
│       │   │   │       │   │       │   └── ShizukuInstallerManga.kt
│       │   │   │       │   │       ├── model/
│       │   │   │       │   │       │   ├── MangaExtension.kt
│       │   │   │       │   │       │   └── MangaLoadResult.kt
│       │   │   │       │   │       └── util/
│       │   │   │       │   │           ├── MangaExtensionInstallActivity.kt
│       │   │   │       │   │           ├── MangaExtensionInstallReceiver.kt
│       │   │   │       │   │           ├── MangaExtensionInstallService.kt
│       │   │   │       │   │           ├── MangaExtensionInstaller.kt
│       │   │   │       │   │           └── MangaExtensionLoader.kt
│       │   │   │       │   ├── source/
│       │   │   │       │   │   ├── anime/
│       │   │   │       │   │   │   ├── AndroidAnimeSourceManager.kt
│       │   │   │       │   │   │   └── AnimeSourceExtensions.kt
│       │   │   │       │   │   └── manga/
│       │   │   │       │   │       ├── AndroidMangaSourceManager.kt
│       │   │   │       │   │       └── MangaSourceExtensions.kt
│       │   │   │       │   ├── ui/
│       │   │   │       │   │   ├── base/
│       │   │   │       │   │   │   ├── activity/
│       │   │   │       │   │   │   │   └── BaseActivity.kt
│       │   │   │       │   │   │   └── delegate/
│       │   │   │       │   │   │       ├── SecureActivityDelegate.kt
│       │   │   │       │   │   │       └── ThemingDelegate.kt
│       │   │   │       │   │   ├── browse/
│       │   │   │       │   │   │   ├── BrowseTab.kt
│       │   │   │       │   │   │   ├── anime/
│       │   │   │       │   │   │   │   ├── extension/
│       │   │   │       │   │   │   │   │   ├── AnimeExtensionFilterScreen.kt
│       │   │   │       │   │   │   │   │   ├── AnimeExtensionFilterScreenModel.kt
│       │   │   │       │   │   │   │   │   ├── AnimeExtensionsScreenModel.kt
│       │   │   │       │   │   │   │   │   ├── AnimeExtensionsTab.kt
│       │   │   │       │   │   │   │   │   └── details/
│       │   │   │       │   │   │   │   │       ├── AnimeExtensionDetailsScreen.kt
│       │   │   │       │   │   │   │   │       ├── AnimeExtensionDetailsScreenModel.kt
│       │   │   │       │   │   │   │   │       └── AnimeSourcePreferencesScreen.kt
│       │   │   │       │   │   │   │   ├── migration/
│       │   │   │       │   │   │   │   │   ├── AnimeMigrationFlags.kt
│       │   │   │       │   │   │   │   │   ├── anime/
│       │   │   │       │   │   │   │   │   │   ├── MigrateAnimeScreen.kt
│       │   │   │       │   │   │   │   │   │   ├── MigrateAnimeScreenModel.kt
│       │   │   │       │   │   │   │   │   │   └── season/
│       │   │   │       │   │   │   │   │   │       ├── MigrateSeasonSelectScreen.kt
│       │   │   │       │   │   │   │   │   │       └── MigrateSeasonSelectScreenModel.kt
│       │   │   │       │   │   │   │   │   ├── search/
│       │   │   │       │   │   │   │   │   │   ├── AnimeMigrateSearchScreenDialogScreenModel.kt
│       │   │   │       │   │   │   │   │   │   ├── AnimeSourceSearchScreen.kt
│       │   │   │       │   │   │   │   │   │   ├── MigrateAnimeDialog.kt
│       │   │   │       │   │   │   │   │   │   ├── MigrateAnimeSearchScreen.kt
│       │   │   │       │   │   │   │   │   │   └── MigrateAnimeSearchScreenModel.kt
│       │   │   │       │   │   │   │   │   └── sources/
│       │   │   │       │   │   │   │   │       ├── MigrateAnimeSourceScreenModel.kt
│       │   │   │       │   │   │   │   │       └── MigrateAnimeSourceTab.kt
│       │   │   │       │   │   │   │   └── source/
│       │   │   │       │   │   │   │       ├── AnimeSourcesFilterScreen.kt
│       │   │   │       │   │   │   │       ├── AnimeSourcesFilterScreenModel.kt
│       │   │   │       │   │   │   │       ├── AnimeSourcesScreenModel.kt
│       │   │   │       │   │   │   │       ├── AnimeSourcesTab.kt
│       │   │   │       │   │   │   │       ├── browse/
│       │   │   │       │   │   │   │       │   ├── BrowseAnimeSourceScreen.kt
│       │   │   │       │   │   │   │       │   ├── BrowseAnimeSourceScreenModel.kt
│       │   │   │       │   │   │   │       │   └── SourceFilterAnimeDialog.kt
│       │   │   │       │   │   │   │       └── globalsearch/
│       │   │   │       │   │   │   │           ├── AnimeSearchScreenModel.kt
│       │   │   │       │   │   │   │           ├── GlobalAnimeSearchScreen.kt
│       │   │   │       │   │   │   │           └── GlobalAnimeSearchScreenModel.kt
│       │   │   │       │   │   │   └── manga/
│       │   │   │       │   │   │       ├── extension/
│       │   │   │       │   │   │       │   ├── MangaExtensionFilterScreen.kt
│       │   │   │       │   │   │       │   ├── MangaExtensionFilterScreenModel.kt
│       │   │   │       │   │   │       │   ├── MangaExtensionsScreenModel.kt
│       │   │   │       │   │   │       │   ├── MangaExtensionsTab.kt
│       │   │   │       │   │   │       │   └── details/
│       │   │   │       │   │   │       │       ├── MangaExtensionDetailsScreen.kt
│       │   │   │       │   │   │       │       ├── MangaExtensionDetailsScreenModel.kt
│       │   │   │       │   │   │       │       └── MangaSourcePreferencesScreen.kt
│       │   │   │       │   │   │       ├── migration/
│       │   │   │       │   │   │       │   ├── MangaMigrationFlags.kt
│       │   │   │       │   │   │       │   ├── manga/
│       │   │   │       │   │   │       │   │   ├── MigrateMangaScreen.kt
│       │   │   │       │   │   │       │   │   └── MigrateMangaScreenModel.kt
│       │   │   │       │   │   │       │   ├── search/
│       │   │   │       │   │   │       │   │   ├── MangaMigrateSearchScreenDialogScreenModel.kt
│       │   │   │       │   │   │       │   │   ├── MangaSourceSearchScreen.kt
│       │   │   │       │   │   │       │   │   ├── MigrateMangaDialog.kt
│       │   │   │       │   │   │       │   │   ├── MigrateMangaSearchScreen.kt
│       │   │   │       │   │   │       │   │   └── MigrateMangaSearchScreenModel.kt
│       │   │   │       │   │   │       │   └── sources/
│       │   │   │       │   │   │       │       ├── MigrateMangaSourceScreenModel.kt
│       │   │   │       │   │   │       │       └── MigrateMangaSourceTab.kt
│       │   │   │       │   │   │       └── source/
│       │   │   │       │   │   │           ├── MangaSourcesFilterScreen.kt
│       │   │   │       │   │   │           ├── MangaSourcesFilterScreenModel.kt
│       │   │   │       │   │   │           ├── MangaSourcesScreenModel.kt
│       │   │   │       │   │   │           ├── MangaSourcesTab.kt
│       │   │   │       │   │   │           ├── browse/
│       │   │   │       │   │   │           │   ├── BrowseMangaSourceScreen.kt
│       │   │   │       │   │   │           │   ├── BrowseMangaSourceScreenModel.kt
│       │   │   │       │   │   │           │   └── SourceFilterMangaDialog.kt
│       │   │   │       │   │   │           └── globalsearch/
│       │   │   │       │   │   │               ├── GlobalMangaSearchScreen.kt
│       │   │   │       │   │   │               ├── GlobalMangaSearchScreenModel.kt
│       │   │   │       │   │   │               └── MangaSearchScreenModel.kt
│       │   │   │       │   │   ├── category/
│       │   │   │       │   │   │   ├── CategoriesTab.kt
│       │   │   │       │   │   │   ├── anime/
│       │   │   │       │   │   │   │   ├── AnimeCategoryScreenModel.kt
│       │   │   │       │   │   │   │   └── AnimeCategoryTab.kt
│       │   │   │       │   │   │   └── manga/
│       │   │   │       │   │   │       ├── MangaCategoryScreenModel.kt
│       │   │   │       │   │   │       └── MangaCategoryTab.kt
│       │   │   │       │   │   ├── deeplink/
│       │   │   │       │   │   │   ├── DeepLinkScreenType.kt
│       │   │   │       │   │   │   ├── anime/
│       │   │   │       │   │   │   │   ├── DeepLinkAnimeActivity.kt
│       │   │   │       │   │   │   │   ├── DeepLinkAnimeScreen.kt
│       │   │   │       │   │   │   │   └── DeepLinkAnimeScreenModel.kt
│       │   │   │       │   │   │   └── manga/
│       │   │   │       │   │   │       ├── DeepLinkMangaActivity.kt
│       │   │   │       │   │   │       ├── DeepLinkMangaScreen.kt
│       │   │   │       │   │   │       └── DeepLinkMangaScreenModel.kt
│       │   │   │       │   │   ├── download/
│       │   │   │       │   │   │   ├── DownloadsTab.kt
│       │   │   │       │   │   │   ├── anime/
│       │   │   │       │   │   │   │   ├── AnimeDownloadAdapter.kt
│       │   │   │       │   │   │   │   ├── AnimeDownloadHeaderHolder.kt
│       │   │   │       │   │   │   │   ├── AnimeDownloadHeaderItem.kt
│       │   │   │       │   │   │   │   ├── AnimeDownloadHolder.kt
│       │   │   │       │   │   │   │   ├── AnimeDownloadItem.kt
│       │   │   │       │   │   │   │   ├── AnimeDownloadQueueScreen.kt
│       │   │   │       │   │   │   │   ├── AnimeDownloadQueueScreenModel.kt
│       │   │   │       │   │   │   │   └── AnimeDownloadQueueTab.kt
│       │   │   │       │   │   │   └── manga/
│       │   │   │       │   │   │       ├── MangaDownloadAdapter.kt
│       │   │   │       │   │   │       ├── MangaDownloadHeaderHolder.kt
│       │   │   │       │   │   │       ├── MangaDownloadHeaderItem.kt
│       │   │   │       │   │   │       ├── MangaDownloadHolder.kt
│       │   │   │       │   │   │       ├── MangaDownloadItem.kt
│       │   │   │       │   │   │       ├── MangaDownloadQueueScreen.kt
│       │   │   │       │   │   │       ├── MangaDownloadQueueScreenModel.kt
│       │   │   │       │   │   │       └── MangaDownloadQueueTab.kt
│       │   │   │       │   │   ├── entries/
│       │   │   │       │   │   │   ├── anime/
│       │   │   │       │   │   │   │   ├── AnimeImageScreenModel.kt
│       │   │   │       │   │   │   │   ├── AnimeScreen.kt
│       │   │   │       │   │   │   │   ├── AnimeScreenModel.kt
│       │   │   │       │   │   │   │   ├── AnimeSeasonItem.kt
│       │   │   │       │   │   │   │   └── track/
│       │   │   │       │   │   │   │       ├── AnimeTrackInfoDialog.kt
│       │   │   │       │   │   │   │       └── AnimeTrackItem.kt
│       │   │   │       │   │   │   └── manga/
│       │   │   │       │   │   │       ├── MangaCoverScreenModel.kt
│       │   │   │       │   │   │       ├── MangaScreen.kt
│       │   │   │       │   │   │       ├── MangaScreenModel.kt
│       │   │   │       │   │   │       └── track/
│       │   │   │       │   │   │           ├── MangaTrackInfoDialog.kt
│       │   │   │       │   │   │           └── MangaTrackItem.kt
│       │   │   │       │   │   ├── history/
│       │   │   │       │   │   │   ├── HistoriesTab.kt
│       │   │   │       │   │   │   ├── anime/
│       │   │   │       │   │   │   │   ├── AnimeHistoryScreenModel.kt
│       │   │   │       │   │   │   │   └── AnimeHistoryTab.kt
│       │   │   │       │   │   │   └── manga/
│       │   │   │       │   │   │       ├── MangaHistoryScreenModel.kt
│       │   │   │       │   │   │       └── MangaHistoryTab.kt
│       │   │   │       │   │   ├── home/
│       │   │   │       │   │   │   └── HomeScreen.kt
│       │   │   │       │   │   ├── library/
│       │   │   │       │   │   │   ├── anime/
│       │   │   │       │   │   │   │   ├── AnimeLibraryItem.kt
│       │   │   │       │   │   │   │   ├── AnimeLibraryScreenModel.kt
│       │   │   │       │   │   │   │   ├── AnimeLibrarySettingsScreenModel.kt
│       │   │   │       │   │   │   │   └── AnimeLibraryTab.kt
│       │   │   │       │   │   │   └── manga/
│       │   │   │       │   │   │       ├── MangaLibraryItem.kt
│       │   │   │       │   │   │       ├── MangaLibraryScreenModel.kt
│       │   │   │       │   │   │       ├── MangaLibrarySettingsScreenModel.kt
│       │   │   │       │   │   │       └── MangaLibraryTab.kt
│       │   │   │       │   │   ├── main/
│       │   │   │       │   │   │   └── MainActivity.kt
│       │   │   │       │   │   ├── more/
│       │   │   │       │   │   │   ├── MoreTab.kt
│       │   │   │       │   │   │   ├── NewUpdateScreen.kt
│       │   │   │       │   │   │   └── OnboardingScreen.kt
│       │   │   │       │   │   ├── player/
│       │   │   │       │   │   │   ├── AniyomiMPVView.kt
│       │   │   │       │   │   │   ├── ExternalIntents.kt
│       │   │   │       │   │   │   ├── PipActions.kt
│       │   │   │       │   │   │   ├── PlayerActivity.kt
│       │   │   │       │   │   │   ├── PlayerEnums.kt
│       │   │   │       │   │   │   ├── PlayerObserver.kt
│       │   │   │       │   │   │   ├── PlayerUtils.kt
│       │   │   │       │   │   │   ├── PlayerViewModel.kt
│       │   │   │       │   │   │   ├── controls/
│       │   │   │       │   │   │   │   ├── BottomLeftPlayerControls.kt
│       │   │   │       │   │   │   │   ├── BottomRightPlayerControls.kt
│       │   │   │       │   │   │   │   ├── GestureHandler.kt
│       │   │   │       │   │   │   │   ├── MiddlePlayerControls.kt
│       │   │   │       │   │   │   │   ├── PlayerControls.kt
│       │   │   │       │   │   │   │   ├── PlayerDialogs.kt
│       │   │   │       │   │   │   │   ├── PlayerPanels.kt
│       │   │   │       │   │   │   │   ├── PlayerSheets.kt
│       │   │   │       │   │   │   │   ├── TopLeftPlayerControls.kt
│       │   │   │       │   │   │   │   ├── TopRightPlayerControls.kt
│       │   │   │       │   │   │   │   └── components/
│       │   │   │       │   │   │   │       ├── AutoPlaySwitch.kt
│       │   │   │       │   │   │   │       ├── BrightnessOverlay.kt
│       │   │   │       │   │   │   │       ├── ControlsButton.kt
│       │   │   │       │   │   │   │       ├── CurrentChapter.kt
│       │   │   │       │   │   │   │       ├── DoubleTapSeekTriangles.kt
│       │   │   │       │   │   │   │       ├── PlayerUpdates.kt
│       │   │   │       │   │   │   │       ├── SeekBar.kt
│       │   │   │       │   │   │   │       ├── VerticalSliders.kt
│       │   │   │       │   │   │   │       ├── dialogs/
│       │   │   │       │   │   │   │       │   ├── EpisodeListDialog.kt
│       │   │   │       │   │   │   │       │   ├── IntegerPickerDialog.kt
│       │   │   │       │   │   │   │       │   └── PlayerDialog.kt
│       │   │   │       │   │   │   │       ├── panels/
│       │   │   │       │   │   │   │       │   ├── AudioDelayPanel.kt
│       │   │   │       │   │   │   │       │   ├── SubtitleDelayPanel.kt
│       │   │   │       │   │   │   │       │   ├── SubtitleSettingsColorsCard.kt
│       │   │   │       │   │   │   │       │   ├── SubtitleSettingsMiscellaneousCard.kt
│       │   │   │       │   │   │   │       │   ├── SubtitleSettingsPanel.kt
│       │   │   │       │   │   │   │       │   ├── SubtitleSettingsTypographyCard.kt
│       │   │   │       │   │   │   │       │   └── VideoFiltersPanel.kt
│       │   │   │       │   │   │   │       └── sheets/
│       │   │   │       │   │   │   │           ├── AudioTracksSheet.kt
│       │   │   │       │   │   │   │           ├── ChaptersSheet.kt
│       │   │   │       │   │   │   │           ├── GenericTracksSheet.kt
│       │   │   │       │   │   │   │           ├── MoreSheet.kt
│       │   │   │       │   │   │   │           ├── PlaybackSpeedSheet.kt
│       │   │   │       │   │   │   │           ├── QualitySheet.kt
│       │   │   │       │   │   │   │           ├── ScreenshotSheet.kt
│       │   │   │       │   │   │   │           └── SubtitleTracksSheet.kt
│       │   │   │       │   │   │   ├── loader/
│       │   │   │       │   │   │   │   ├── EpisodeLoader.kt
│       │   │   │       │   │   │   │   └── HosterLoader.kt
│       │   │   │       │   │   │   ├── settings/
│       │   │   │       │   │   │   │   ├── AdvancedPlayerPreferences.kt
│       │   │   │       │   │   │   │   ├── AudioPreferences.kt
│       │   │   │       │   │   │   │   ├── DecoderPreferences.kt
│       │   │   │       │   │   │   │   ├── GesturePreferences.kt
│       │   │   │       │   │   │   │   ├── PlayerPreferences.kt
│       │   │   │       │   │   │   │   └── SubtitlePreferences.kt
│       │   │   │       │   │   │   └── utils/
│       │   │   │       │   │   │       ├── AniSkipApi.kt
│       │   │   │       │   │   │       ├── ChapterUtils.kt
│       │   │   │       │   │   │       └── TrackSelect.kt
│       │   │   │       │   │   ├── reader/
│       │   │   │       │   │   │   ├── ReaderActivity.kt
│       │   │   │       │   │   │   ├── ReaderNavigationOverlayView.kt
│       │   │   │       │   │   │   ├── ReaderViewModel.kt
│       │   │   │       │   │   │   ├── SaveImageNotifier.kt
│       │   │   │       │   │   │   ├── loader/
│       │   │   │       │   │   │   │   ├── ArchivePageLoader.kt
│       │   │   │       │   │   │   │   ├── ChapterLoader.kt
│       │   │   │       │   │   │   │   ├── DirectoryPageLoader.kt
│       │   │   │       │   │   │   │   ├── DownloadPageLoader.kt
│       │   │   │       │   │   │   │   ├── EpubPageLoader.kt
│       │   │   │       │   │   │   │   ├── HttpPageLoader.kt
│       │   │   │       │   │   │   │   └── PageLoader.kt
│       │   │   │       │   │   │   ├── model/
│       │   │   │       │   │   │   │   ├── ChapterTransition.kt
│       │   │   │       │   │   │   │   ├── InsertPage.kt
│       │   │   │       │   │   │   │   ├── ReaderChapter.kt
│       │   │   │       │   │   │   │   ├── ReaderPage.kt
│       │   │   │       │   │   │   │   └── ViewerChapters.kt
│       │   │   │       │   │   │   ├── setting/
│       │   │   │       │   │   │   │   ├── ReaderOrientation.kt
│       │   │   │       │   │   │   │   ├── ReaderPreferences.kt
│       │   │   │       │   │   │   │   ├── ReaderSettingsScreenModel.kt
│       │   │   │       │   │   │   │   └── ReadingMode.kt
│       │   │   │       │   │   │   └── viewer/
│       │   │   │       │   │   │       ├── GestureDetectorWithLongTap.kt
│       │   │   │       │   │   │       ├── MissingChapters.kt
│       │   │   │       │   │   │       ├── ReaderButton.kt
│       │   │   │       │   │   │       ├── ReaderPageImageView.kt
│       │   │   │       │   │   │       ├── ReaderProgressIndicator.kt
│       │   │   │       │   │   │       ├── ReaderTransitionView.kt
│       │   │   │       │   │   │       ├── Viewer.kt
│       │   │   │       │   │   │       ├── ViewerConfig.kt
│       │   │   │       │   │   │       ├── ViewerNavigation.kt
│       │   │   │       │   │   │       ├── navigation/
│       │   │   │       │   │   │       │   ├── DisabledNavigation.kt
│       │   │   │       │   │   │       │   ├── EdgeNavigation.kt
│       │   │   │       │   │   │       │   ├── KindlishNavigation.kt
│       │   │   │       │   │   │       │   ├── LNavigation.kt
│       │   │   │       │   │   │       │   └── RightAndLeftNavigation.kt
│       │   │   │       │   │   │       ├── pager/
│       │   │   │       │   │   │       │   ├── Pager.kt
│       │   │   │       │   │   │       │   ├── PagerConfig.kt
│       │   │   │       │   │   │       │   ├── PagerPageHolder.kt
│       │   │   │       │   │   │       │   ├── PagerTransitionHolder.kt
│       │   │   │       │   │   │       │   ├── PagerViewer.kt
│       │   │   │       │   │   │       │   ├── PagerViewerAdapter.kt
│       │   │   │       │   │   │       │   └── PagerViewers.kt
│       │   │   │       │   │   │       └── webtoon/
│       │   │   │       │   │   │           ├── WebtoonAdapter.kt
│       │   │   │       │   │   │           ├── WebtoonBaseHolder.kt
│       │   │   │       │   │   │           ├── WebtoonConfig.kt
│       │   │   │       │   │   │           ├── WebtoonFrame.kt
│       │   │   │       │   │   │           ├── WebtoonLayoutManager.kt
│       │   │   │       │   │   │           ├── WebtoonPageHolder.kt
│       │   │   │       │   │   │           ├── WebtoonRecyclerView.kt
│       │   │   │       │   │   │           ├── WebtoonSubsamplingImageView.kt
│       │   │   │       │   │   │           ├── WebtoonTransitionHolder.kt
│       │   │   │       │   │   │           └── WebtoonViewer.kt
│       │   │   │       │   │   ├── security/
│       │   │   │       │   │   │   └── UnlockActivity.kt
│       │   │   │       │   │   ├── setting/
│       │   │   │       │   │   │   ├── PlayerSettingsScreen.kt
│       │   │   │       │   │   │   ├── SettingsScreen.kt
│       │   │   │       │   │   │   └── track/
│       │   │   │       │   │   │       ├── BaseOAuthLoginActivity.kt
│       │   │   │       │   │   │       └── TrackLoginActivity.kt
│       │   │   │       │   │   ├── stats/
│       │   │   │       │   │   │   ├── StatsTab.kt
│       │   │   │       │   │   │   ├── anime/
│       │   │   │       │   │   │   │   ├── AnimeStatsScreenModel.kt
│       │   │   │       │   │   │   │   └── AnimeStatsTab.kt
│       │   │   │       │   │   │   └── manga/
│       │   │   │       │   │   │       ├── MangaStatsScreenModel.kt
│       │   │   │       │   │   │       └── MangaStatsTab.kt
│       │   │   │       │   │   ├── storage/
│       │   │   │       │   │   │   ├── CommonStorageScreenModel.kt
│       │   │   │       │   │   │   ├── StorageTab.kt
│       │   │   │       │   │   │   ├── anime/
│       │   │   │       │   │   │   │   ├── AnimeStorageScreenModel.kt
│       │   │   │       │   │   │   │   └── AnimeStorageTab.kt
│       │   │   │       │   │   │   └── manga/
│       │   │   │       │   │   │       ├── MangaStorageScreenModel.kt
│       │   │   │       │   │   │       └── MangaStorageTab.kt
│       │   │   │       │   │   ├── updates/
│       │   │   │       │   │   │   ├── UpdatesTab.kt
│       │   │   │       │   │   │   ├── anime/
│       │   │   │       │   │   │   │   ├── AnimeUpdatesScreenModel.kt
│       │   │   │       │   │   │   │   └── AnimeUpdatesTab.kt
│       │   │   │       │   │   │   └── manga/
│       │   │   │       │   │   │       ├── MangaUpdatesScreenModel.kt
│       │   │   │       │   │   │       └── MangaUpdatesTab.kt
│       │   │   │       │   │   └── webview/
│       │   │   │       │   │       ├── WebViewActivity.kt
│       │   │   │       │   │       ├── WebViewScreen.kt
│       │   │   │       │   │       └── WebViewScreenModel.kt
│       │   │   │       │   ├── util/
│       │   │   │       │   │   ├── AniChartApi.kt
│       │   │   │       │   │   ├── AnimeExtensions.kt
│       │   │   │       │   │   ├── CrashLogUtil.kt
│       │   │   │       │   │   ├── MangaExtensions.kt
│       │   │   │       │   │   ├── PkceUtil.kt
│       │   │   │       │   │   ├── StorageUtil.kt
│       │   │   │       │   │   ├── chapter/
│       │   │   │       │   │   │   ├── ChapterFilterDownloaded.kt
│       │   │   │       │   │   │   ├── ChapterGetNextUnread.kt
│       │   │   │       │   │   │   └── ChapterRemoveDuplicates.kt
│       │   │   │       │   │   ├── episode/
│       │   │   │       │   │   │   ├── EpisodeFilterDownloaded.kt
│       │   │   │       │   │   │   └── EpsiodeGetNextUnseen.kt
│       │   │   │       │   │   ├── lang/
│       │   │   │       │   │   │   ├── CloseableExtensions.kt
│       │   │   │       │   │   │   ├── DateExtensions.kt
│       │   │   │       │   │   │   └── RectFExtensions.kt
│       │   │   │       │   │   ├── storage/
│       │   │   │       │   │   │   └── OkioExtensions.kt
│       │   │   │       │   │   ├── system/
│       │   │   │       │   │   │   ├── AnimationExtensions.kt
│       │   │   │       │   │   │   ├── AuthenticatorUtil.kt
│       │   │   │       │   │   │   ├── BuildConfig.kt
│       │   │   │       │   │   │   ├── ChildFirstPathClassLoader.kt
│       │   │   │       │   │   │   ├── ContextExtensions.kt
│       │   │   │       │   │   │   ├── DeviceUtilExtensions.kt
│       │   │   │       │   │   │   ├── DisplayExtensions.kt
│       │   │   │       │   │   │   ├── DrawableExtensions.kt
│       │   │   │       │   │   │   ├── IntentExtensions.kt
│       │   │   │       │   │   │   ├── InternalResourceHelper.kt
│       │   │   │       │   │   │   ├── LocaleHelper.kt
│       │   │   │       │   │   │   ├── NetworkExtensions.kt
│       │   │   │       │   │   │   ├── NetworkStateTracker.kt
│       │   │   │       │   │   │   ├── NotificationExtensions.kt
│       │   │   │       │   │   │   ├── TvUtils.kt
│       │   │   │       │   │   │   └── WorkManagerExtensions.kt
│       │   │   │       │   │   └── view/
│       │   │   │       │   │       ├── EditTextPreferenceExtensions.kt
│       │   │   │       │   │       ├── ViewExtensions.kt
│       │   │   │       │   │       └── WindowExtensions.kt
│       │   │   │       │   └── widget/
│       │   │   │       │       ├── MinMaxNumberPicker.kt
│       │   │   │       │       ├── RevealAnimationView.kt
│       │   │   │       │       ├── TachiyomiTextInputEditText.kt
│       │   │   │       │       ├── ViewPagerAdapter.kt
│       │   │   │       │       └── listener/
│       │   │   │       │           ├── IgnoreFirstSpinnerListener.kt
│       │   │   │       │           └── SimpleSeekBarListener.kt
│       │   │   │       └── test/
│       │   │   │           └── DummyTracker.kt
│       │   │   └── mihon/
│       │   │       ├── core/
│       │   │       │   ├── designsystem/
│       │   │       │   │   └── utils/
│       │   │       │   │       └── WindowSize.kt
│       │   │       │   └── migration/
│       │   │       │       ├── Migration.kt
│       │   │       │       ├── MigrationCompletedListener.kt
│       │   │       │       ├── MigrationContext.kt
│       │   │       │       ├── MigrationJobFactory.kt
│       │   │       │       ├── MigrationStrategy.kt
│       │   │       │       ├── MigrationStrategyFactory.kt
│       │   │       │       ├── Migrator.kt
│       │   │       │       └── migrations/
│       │   │       │           ├── AddAllLangMigration.kt
│       │   │       │           ├── CategoryPreferencesCleanupMigration.kt
│       │   │       │           ├── CombineUpdateRestrictionMigration.kt
│       │   │       │           ├── CoverToExternalFileMigration.kt
│       │   │       │           ├── DOHMigration.kt
│       │   │       │           ├── DeleteExternalChapterCacheDirMigration.kt
│       │   │       │           ├── DontRunJobsMigration.kt
│       │   │       │           ├── EnableAutoBackupMigration.kt
│       │   │       │           ├── EnumsMigration.kt
│       │   │       │           ├── ExternalRepoMigration.kt
│       │   │       │           ├── ForceMALLogOutMigration.kt
│       │   │       │           ├── InternalChapterCacheDirMigration.kt
│       │   │       │           ├── LogOutMALMigration.kt
│       │   │       │           ├── MergeSortTypeDirectionMigration.kt
│       │   │       │           ├── MigrateRotationViewerValuesMigration.kt
│       │   │       │           ├── MigrateSecureScreenMigration.kt
│       │   │       │           ├── MigrateSortingModeMigration.kt
│       │   │       │           ├── MigrateToTriStateMigration.kt
│       │   │       │           ├── MigrateTriStateMigration.kt
│       │   │       │           ├── MigrationUtils.kt
│       │   │       │           ├── Migrations.kt
│       │   │       │           ├── MoveChapterPreferencesMigration.kt
│       │   │       │           ├── MovePlayerPreferencesMigration.kt
│       │   │       │           ├── NavigationOptionsMigration.kt
│       │   │       │           ├── NoAppStateMigration.kt
│       │   │       │           ├── PermaTrustExtensionsMigration.kt
│       │   │       │           ├── PlayerPreferenceMigration.kt
│       │   │       │           ├── PrefLangMigration.kt
│       │   │       │           ├── PrivatePreferenceMigration.kt
│       │   │       │           ├── RelativeTimestampMigration.kt
│       │   │       │           ├── RemoveBackgroundJobsMigration.kt
│       │   │       │           ├── RemoveOneTwoHourUpdateMigration.kt
│       │   │       │           ├── RemoveQuickUpdateMigration.kt
│       │   │       │           ├── RemoveReaderTapMigration.kt
│       │   │       │           ├── RenameEnumMigration.kt
│       │   │       │           ├── ResetRotationMigration.kt
│       │   │       │           ├── ResetSortPreferenceRemovedMigration.kt
│       │   │       │           ├── SetupAnimeLibraryUpdateMigration.kt
│       │   │       │           ├── SetupBackgroundTasksMigration.kt
│       │   │       │           ├── SetupBackupCreateMigration.kt
│       │   │       │           ├── SetupMangaLibraryUpdateMigration.kt
│       │   │       │           ├── SplitPreferencesMigration.kt
│       │   │       │           ├── TrustExtensionRepositoryMigration.kt
│       │   │       │           ├── UseWorkManagerMigration.kt
│       │   │       │           ├── VideoOrientationMigration.kt
│       │   │       │           └── VideoPlayerPreferenceMigration.kt
│       │   │       └── feature/
│       │   │           └── upcoming/
│       │   │               ├── anime/
│       │   │               │   ├── UpcomingAnimeScreen.kt
│       │   │               │   ├── UpcomingAnimeScreenContent.kt
│       │   │               │   ├── UpcomingAnimeScreenModel.kt
│       │   │               │   ├── UpcomingAnimeUIModel.kt
│       │   │               │   └── components/
│       │   │               │       └── UpcomingItem.kt
│       │   │               ├── components/
│       │   │               │   └── calendar/
│       │   │               │       ├── Calendar.kt
│       │   │               │       ├── CalendarDay.kt
│       │   │               │       ├── CalendarHeader.kt
│       │   │               │       └── CalendarIndicator.kt
│       │   │               └── manga/
│       │   │                   ├── UpcomingMangaScreen.kt
│       │   │                   ├── UpcomingMangaScreenContent.kt
│       │   │                   ├── UpcomingMangaScreenModel.kt
│       │   │                   ├── UpcomingMangaUIModel.kt
│       │   │                   └── components/
│       │   │                       └── UpcomingItem.kt
│       │   └── res/
│       │       ├── anim/
│       │       │   ├── player_enter_bottom.xml
│       │       │   ├── player_enter_left.xml
│       │       │   ├── player_enter_right.xml
│       │       │   ├── player_enter_top.xml
│       │       │   ├── player_exit_bottom.xml
│       │       │   ├── player_exit_left.xml
│       │       │   ├── player_exit_right.xml
│       │       │   ├── player_exit_top.xml
│       │       │   ├── player_fade_in.xml
│       │       │   ├── player_fade_out.xml
│       │       │   ├── shared_axis_x_pop_enter.xml
│       │       │   ├── shared_axis_x_pop_exit.xml
│       │       │   ├── shared_axis_x_push_enter.xml
│       │       │   └── shared_axis_x_push_exit.xml
│       │       ├── anim-v33/
│       │       │   ├── shared_axis_x_pop_enter.xml
│       │       │   ├── shared_axis_x_pop_exit.xml
│       │       │   ├── shared_axis_x_push_enter.xml
│       │       │   └── shared_axis_x_push_exit.xml
│       │       ├── color/
│       │       │   └── draggable_card_foreground.xml
│       │       ├── drawable/
│       │       │   ├── anim_animelibrary_enter.xml
│       │       │   ├── anim_animelibrary_leave.xml
│       │       │   ├── anim_browse_enter.xml
│       │       │   ├── anim_caret_down.xml
│       │       │   ├── anim_history_enter.xml
│       │       │   ├── anim_library_enter.xml
│       │       │   ├── anim_more_enter.xml
│       │       │   ├── anim_play_to_pause.xml
│       │       │   ├── anim_updates_enter.xml
│       │       │   ├── cover_error.xml
│       │       │   ├── ic_ani.xml
│       │       │   ├── ic_ani_monochrome_launcher.xml
│       │       │   ├── ic_animelibrary_filled_24dp.xml
│       │       │   ├── ic_animelibrary_outline_24dp.xml
│       │       │   ├── ic_animelibrary_selector_24dp.xml
│       │       │   ├── ic_arrow_back_24dp.xml
│       │       │   ├── ic_baseline_collections_24.xml
│       │       │   ├── ic_baseline_input_24.xml
│       │       │   ├── ic_baseline_open_in_new_24.xml
│       │       │   ├── ic_book_24dp.xml
│       │       │   ├── ic_brightness_negative_20dp.xml
│       │       │   ├── ic_chrome_player_mode_24dp.xml
│       │       │   ├── ic_circle_200dp.xml
│       │       │   ├── ic_circle_right_200dp.xml
│       │       │   ├── ic_close_24dp.xml
│       │       │   ├── ic_collections_baseline_state.xml
│       │       │   ├── ic_crop_24dp.xml
│       │       │   ├── ic_crop_off_24dp.xml
│       │       │   ├── ic_done_24dp.xml
│       │       │   ├── ic_done_prev_24dp.xml
│       │       │   ├── ic_download_item_24dp.xml
│       │       │   ├── ic_drag_handle_24dp.xml
│       │       │   ├── ic_extension_24dp.xml
│       │       │   ├── ic_folder_24dp.xml
│       │       │   ├── ic_forward_10_24dp.xml
│       │       │   ├── ic_glasses_24dp.xml
│       │       │   ├── ic_info_24dp.xml
│       │       │   ├── ic_launcher_background.xml
│       │       │   ├── ic_launcher_foreground.xml
│       │       │   ├── ic_overflow_24dp.xml
│       │       │   ├── ic_pause_24dp.xml
│       │       │   ├── ic_pause_circle_filled_24.xml
│       │       │   ├── ic_photo_24dp.xml
│       │       │   ├── ic_play_arrow_24dp.xml
│       │       │   ├── ic_play_circle_filled_24.xml
│       │       │   ├── ic_play_seek_triangle.xml
│       │       │   ├── ic_reader_continuous_vertical_24dp.xml
│       │       │   ├── ic_reader_default_24dp.xml
│       │       │   ├── ic_reader_ltr_24dp.xml
│       │       │   ├── ic_reader_rtl_24dp.xml
│       │       │   ├── ic_reader_vertical_24dp.xml
│       │       │   ├── ic_reader_webtoon_24dp.xml
│       │       │   ├── ic_refresh_24dp.xml
│       │       │   ├── ic_share_24dp.xml
│       │       │   ├── ic_skip_next_24dp.xml
│       │       │   ├── ic_skip_previous_24dp.xml
│       │       │   ├── ic_system_update_alt_white_24dp.xml
│       │       │   ├── ic_tachi_splash.xml
│       │       │   ├── ic_updates_outline_24dp.xml
│       │       │   ├── ic_video_chapter_20dp.xml
│       │       │   ├── ic_volume_off_24dp.xml
│       │       │   ├── ic_warning_white_24dp.xml
│       │       │   ├── line_divider.xml
│       │       │   ├── material_popup_background.xml
│       │       │   ├── outline_brand_family_24.xml
│       │       │   ├── sc_collections_baseline_48dp.xml
│       │       │   ├── sc_collections_bookmark_48dp.xml
│       │       │   ├── sc_explore_48dp.xml
│       │       │   ├── sc_history_48dp.xml
│       │       │   ├── sc_new_releases_48dp.xml
│       │       │   └── sharp_shadow_24.xml
│       │       ├── layout/
│       │       │   ├── download_header.xml
│       │       │   ├── download_item.xml
│       │       │   ├── download_list.xml
│       │       │   ├── player_layout.xml
│       │       │   ├── pref_widget_switch_material.xml
│       │       │   ├── reader_activity.xml
│       │       │   └── reader_error.xml
│       │       ├── menu/
│       │       │   ├── chapter_download.xml
│       │       │   ├── download_single.xml
│       │       │   └── main_nav.xml
│       │       ├── mipmap/
│       │       │   ├── ic_launcher.xml
│       │       │   └── ic_launcher_round.xml
│       │       ├── raw/
│       │       │   └── keep.xml
│       │       ├── values/
│       │       │   ├── attrs.xml
│       │       │   ├── bools.xml
│       │       │   ├── colors_cottoncandy.xml
│       │       │   ├── colors_mocha.xml
│       │       │   ├── dimens.xml
│       │       │   ├── ids.xml
│       │       │   ├── integers.xml
│       │       │   ├── styles.xml
│       │       │   └── themes.xml
│       │       ├── values-night/
│       │       │   ├── bools.xml
│       │       │   ├── colors_cottoncandy.xml
│       │       │   ├── colors_mocha.xml
│       │       │   └── themes.xml
│       │       ├── values-night-v31/
│       │       │   └── themes.xml
│       │       ├── values-sw720dp/
│       │       │   └── dimens.xml
│       │       ├── values-v27/
│       │       │   ├── bools.xml
│       │       │   └── themes.xml
│       │       ├── values-v31/
│       │       │   └── themes.xml
│       │       └── xml/
│       │           ├── network_security_config.xml
│       │           ├── provider_paths.xml
│       │           ├── s_pen_actions.xml
│       │           └── searchable.xml
│       └── test/
│           └── java/
│               └── mihon/
│                   └── core/
│                       └── migration/
│                           └── MigratorTest.kt
├── build.gradle.kts
├── buildSrc/
│   ├── build.gradle.kts
│   ├── settings.gradle.kts
│   └── src/
│       └── main/
│           └── kotlin/
│               ├── mihon/
│               │   └── buildlogic/
│               │       ├── AndroidConfig.kt
│               │       ├── BuildConfig.kt
│               │       ├── Commands.kt
│               │       ├── ProjectExtensions.kt
│               │       └── tasks/
│               │           └── LocalesConfigTask.kt
│               ├── mihon.android.application.compose.gradle.kts
│               ├── mihon.android.application.gradle.kts
│               ├── mihon.benchmark.gradle.kts
│               ├── mihon.code.lint.gradle.kts
│               ├── mihon.library.compose.gradle.kts
│               └── mihon.library.gradle.kts
├── core/
│   ├── archive/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       └── main/
│   │           ├── AndroidManifest.xml
│   │           └── kotlin/
│   │               └── mihon/
│   │                   └── core/
│   │                       └── archive/
│   │                           ├── ArchiveEntry.kt
│   │                           ├── ArchiveInputStream.kt
│   │                           ├── ArchiveReader.kt
│   │                           ├── EpubReader.kt
│   │                           ├── UniFileExtensions.kt
│   │                           └── ZipWriter.kt
│   └── common/
│       ├── build.gradle.kts
│       └── src/
│           └── main/
│               ├── AndroidManifest.xml
│               └── java/
│                   ├── eu/
│                   │   └── kanade/
│                   │       └── tachiyomi/
│                   │           ├── core/
│                   │           │   ├── Constants.kt
│                   │           │   └── security/
│                   │           │       └── SecurityPreferences.kt
│                   │           ├── network/
│                   │           │   ├── AndroidCookieJar.kt
│                   │           │   ├── DohProviders.kt
│                   │           │   ├── JavaScriptEngine.kt
│                   │           │   ├── NetworkHelper.kt
│                   │           │   ├── NetworkPreferences.kt
│                   │           │   ├── OkHttpExtensions.kt
│                   │           │   ├── ProgressListener.kt
│                   │           │   ├── ProgressResponseBody.kt
│                   │           │   ├── Requests.kt
│                   │           │   └── interceptor/
│                   │           │       ├── CloudflareInterceptor.kt
│                   │           │       ├── IgnoreGzipInterceptor.kt
│                   │           │       ├── RateLimitInterceptor.kt
│                   │           │       ├── SpecificHostRateLimitInterceptor.kt
│                   │           │       ├── UncaughtExceptionInterceptor.kt
│                   │           │       ├── UserAgentInterceptor.kt
│                   │           │       └── WebViewInterceptor.kt
│                   │           └── util/
│                   │               ├── lang/
│                   │               │   ├── Hash.kt
│                   │               │   └── StringExtensions.kt
│                   │               ├── storage/
│                   │               │   ├── DiskUtil.kt
│                   │               │   ├── FFmpegUtils.kt
│                   │               │   └── FileExtensions.kt
│                   │               └── system/
│                   │                   ├── DensityExtensions.kt
│                   │                   ├── DeviceUtil.kt
│                   │                   ├── GLUtil.kt
│                   │                   ├── ToastExtensions.kt
│                   │                   └── WebViewUtil.kt
│                   └── tachiyomi/
│                       └── core/
│                           └── common/
│                               ├── i18n/
│                               │   └── Localize.kt
│                               ├── preference/
│                               │   ├── AndroidPreference.kt
│                               │   ├── AndroidPreferenceStore.kt
│                               │   ├── CheckboxState.kt
│                               │   ├── InMemoryPreferenceStore.kt
│                               │   ├── Preference.kt
│                               │   ├── PreferenceStore.kt
│                               │   └── TriState.kt
│                               ├── storage/
│                               │   ├── AndroidStorageFolderProvider.kt
│                               │   ├── FolderProvider.kt
│                               │   ├── UniFileExtensions.kt
│                               │   └── UniFileTempFileManager.kt
│                               └── util/
│                                   ├── lang/
│                                   │   ├── BooleanExtensions.kt
│                                   │   ├── CoroutinesExtensions.kt
│                                   │   ├── RxCoroutineBridge.kt
│                                   │   └── SortUtil.kt
│                                   └── system/
│                                       ├── ImageUtil.kt
│                                       └── LogcatExtensions.kt
├── core-metadata/
│   ├── build.gradle.kts
│   ├── consumer-rules.pro
│   ├── proguard-rules.pro
│   └── src/
│       └── main/
│           ├── AndroidManifest.xml
│           └── java/
│               └── tachiyomi/
│                   └── core/
│                       └── metadata/
│                           ├── comicinfo/
│                           │   └── ComicInfo.kt
│                           └── tachiyomi/
│                               ├── AnimeDetails.kt
│                               ├── ChapterDetails.kt
│                               ├── EpisodeDetails.kt
│                               └── MangaDetails.kt
├── data/
│   ├── build.gradle.kts
│   ├── consumer-rules.pro
│   ├── proguard-rules.pro
│   └── src/
│       └── main/
│           ├── AndroidManifest.xml
│           ├── java/
│           │   ├── mihon/
│           │   │   └── data/
│           │   │       └── repository/
│           │   │           ├── anime/
│           │   │           │   └── AnimeExtensionRepoRepositoryImpl.kt
│           │   │           └── manga/
│           │   │               └── MangaExtensionRepoRepositoryImpl.kt
│           │   └── tachiyomi/
│           │       └── data/
│           │           ├── DatabaseAdapter.kt
│           │           ├── category/
│           │           │   ├── anime/
│           │           │   │   └── AnimeCategoryRepositoryImpl.kt
│           │           │   └── manga/
│           │           │       └── MangaCategoryRepositoryImpl.kt
│           │           ├── custombutton/
│           │           │   └── CustomButtonRepositoryImpl.kt
│           │           ├── entries/
│           │           │   ├── anime/
│           │           │   │   ├── AnimeMapper.kt
│           │           │   │   └── AnimeRepositoryImpl.kt
│           │           │   └── manga/
│           │           │       ├── MangaMapper.kt
│           │           │       └── MangaRepositoryImpl.kt
│           │           ├── handlers/
│           │           │   ├── anime/
│           │           │   │   ├── AndroidAnimeDatabaseHandler.kt
│           │           │   │   ├── AnimeDatabaseHandler.kt
│           │           │   │   ├── AnimeTransactionContext.kt
│           │           │   │   └── QueryPagingAnimeSource.kt
│           │           │   └── manga/
│           │           │       ├── AndroidMangaDatabaseHandler.kt
│           │           │       ├── MangaDatabaseHandler.kt
│           │           │       ├── MangaTransactionContext.kt
│           │           │       └── QueryPagingMangaSource.kt
│           │           ├── history/
│           │           │   ├── anime/
│           │           │   │   ├── AnimeHistoryMapper.kt
│           │           │   │   └── AnimeHistoryRepositoryImpl.kt
│           │           │   └── manga/
│           │           │       ├── MangaHistoryMapper.kt
│           │           │       └── MangaHistoryRepositoryImpl.kt
│           │           ├── items/
│           │           │   ├── chapter/
│           │           │   │   ├── ChapterRepositoryImpl.kt
│           │           │   │   └── ChapterSanitizer.kt
│           │           │   └── episode/
│           │           │       ├── EpisodeRepositoryImpl.kt
│           │           │       └── EpisodeSanitizer.kt
│           │           ├── release/
│           │           │   ├── GithubRelease.kt
│           │           │   └── ReleaseServiceImpl.kt
│           │           ├── source/
│           │           │   ├── anime/
│           │           │   │   ├── AnimeSourcePagingSource.kt
│           │           │   │   ├── AnimeSourceRepositoryImpl.kt
│           │           │   │   └── AnimeStubSourceRepositoryImpl.kt
│           │           │   └── manga/
│           │           │       ├── MangaSourcePagingSource.kt
│           │           │       ├── MangaSourceRepositoryImpl.kt
│           │           │       └── MangaStubSourceRepositoryImpl.kt
│           │           ├── track/
│           │           │   ├── anime/
│           │           │   │   ├── AnimeTrackMapper.kt
│           │           │   │   └── AnimeTrackRepositoryImpl.kt
│           │           │   └── manga/
│           │           │       ├── MangaTrackMapper.kt
│           │           │       └── MangaTrackRepositoryImpl.kt
│           │           └── updates/
│           │               ├── anime/
│           │               │   └── AnimeUpdatesRepositoryImpl.kt
│           │               └── manga/
│           │                   └── MangaUpdatesRepositoryImpl.kt
│           ├── sqldelight/
│           │   ├── data/
│           │   │   ├── categories.sq
│           │   │   ├── chapters.sq
│           │   │   ├── excluded_scanlators.sq
│           │   │   ├── extension_repos.sq
│           │   │   ├── history.sq
│           │   │   ├── manga_sync.sq
│           │   │   ├── mangas.sq
│           │   │   ├── mangas_categories.sq
│           │   │   └── sources.sq
│           │   ├── migrations/
│           │   │   ├── 1.sqm
│           │   │   ├── 10.sqm
│           │   │   ├── 11.sqm
│           │   │   ├── 12.sqm
│           │   │   ├── 13.sqm
│           │   │   ├── 14.sqm
│           │   │   ├── 15.sqm
│           │   │   ├── 16.sqm
│           │   │   ├── 17.sqm
│           │   │   ├── 18.sqm
│           │   │   ├── 19.sqm
│           │   │   ├── 2.sqm
│           │   │   ├── 20.sqm
│           │   │   ├── 21.sqm
│           │   │   ├── 22.sqm
│           │   │   ├── 23.sqm
│           │   │   ├── 24.sqm
│           │   │   ├── 25.sqm
│           │   │   ├── 26.sqm
│           │   │   ├── 27.sqm
│           │   │   ├── 28.sqm
│           │   │   ├── 29.sqm
│           │   │   ├── 3.sqm
│           │   │   ├── 30.sqm
│           │   │   ├── 31.sqm
│           │   │   ├── 32.sqm
│           │   │   ├── 4.sqm
│           │   │   ├── 5.sqm
│           │   │   ├── 6.sqm
│           │   │   ├── 7.sqm
│           │   │   ├── 8.sqm
│           │   │   └── 9.sqm
│           │   └── view/
│           │       ├── historyView.sq
│           │       ├── libraryView.sq
│           │       └── updatesView.sq
│           └── sqldelightanime/
│               ├── dataanime/
│               │   ├── anime_sync.sq
│               │   ├── animehistory.sq
│               │   ├── animes.sq
│               │   ├── animes_categories.sq
│               │   ├── animesources.sq
│               │   ├── categories.sq
│               │   ├── custom_buttons.sq
│               │   ├── episodes.sq
│               │   └── extension_repos.sq
│               ├── migrations/
│               │   ├── 113.sqm
│               │   ├── 114.sqm
│               │   ├── 115.sqm
│               │   ├── 116.sqm
│               │   ├── 117.sqm
│               │   ├── 118.sqm
│               │   ├── 119.sqm
│               │   ├── 120.sqm
│               │   ├── 121.sqm
│               │   ├── 122.sqm
│               │   ├── 123.sqm
│               │   ├── 124.sqm
│               │   ├── 125.sqm
│               │   ├── 126.sqm
│               │   ├── 127.sqm
│               │   ├── 128.sqm
│               │   ├── 129.sqm
│               │   ├── 130.sqm
│               │   ├── 131.sqm
│               │   ├── 132.sqm
│               │   ├── 133.sqm
│               │   ├── 134.sqm
│               │   └── 135.sqm
│               └── view/
│                   ├── animedeletableView.sq
│                   ├── animehistoryView.sq
│                   ├── animehistorystatsView.sq
│                   ├── animelibView.sq
│                   ├── animeseasonsView.sq
│                   ├── animeseasonstatsView.sq
│                   ├── animeupdatesView.sq
│                   └── episodestatsView.sq
├── domain/
│   ├── build.gradle.kts
│   ├── consumer-rules.pro
│   ├── proguard-rules.pro
│   └── src/
│       ├── main/
│       │   ├── AndroidManifest.xml
│       │   └── java/
│       │       ├── aniyomi/
│       │       │   └── domain/
│       │       │       └── anime/
│       │       │           ├── SeasonAnime.kt
│       │       │           └── SeasonDisplayMode.kt
│       │       ├── mihon/
│       │       │   └── domain/
│       │       │       ├── extensionrepo/
│       │       │       │   ├── anime/
│       │       │       │   │   ├── interactor/
│       │       │       │   │   │   ├── CreateAnimeExtensionRepo.kt
│       │       │       │   │   │   ├── DeleteAnimeExtensionRepo.kt
│       │       │       │   │   │   ├── GetAnimeExtensionRepo.kt
│       │       │       │   │   │   ├── GetAnimeExtensionRepoCount.kt
│       │       │       │   │   │   ├── ReplaceAnimeExtensionRepo.kt
│       │       │       │   │   │   └── UpdateAnimeExtensionRepo.kt
│       │       │       │   │   └── repository/
│       │       │       │   │       └── AnimeExtensionRepoRepository.kt
│       │       │       │   ├── exception/
│       │       │       │   │   └── SaveExtensionRepoException.kt
│       │       │       │   ├── manga/
│       │       │       │   │   ├── interactor/
│       │       │       │   │   │   ├── CreateMangaExtensionRepo.kt
│       │       │       │   │   │   ├── DeleteMangaExtensionRepo.kt
│       │       │       │   │   │   ├── GetMangaExtensionRepo.kt
│       │       │       │   │   │   ├── GetMangaExtensionRepoCount.kt
│       │       │       │   │   │   ├── ReplaceMangaExtensionRepo.kt
│       │       │       │   │   │   └── UpdateMangaExtensionRepo.kt
│       │       │       │   │   └── repository/
│       │       │       │   │       └── MangaExtensionRepoRepository.kt
│       │       │       │   ├── model/
│       │       │       │   │   └── ExtensionRepo.kt
│       │       │       │   └── service/
│       │       │       │       ├── ExtensionRepoDto.kt
│       │       │       │       └── ExtensionRepoService.kt
│       │       │       ├── items/
│       │       │       │   ├── chapter/
│       │       │       │   │   └── interactor/
│       │       │       │   │       └── FilterChaptersForDownload.kt
│       │       │       │   └── episode/
│       │       │       │       └── interactor/
│       │       │       │           └── FilterEpisodesForDownload.kt
│       │       │       └── upcoming/
│       │       │           ├── anime/
│       │       │           │   └── interactor/
│       │       │           │       └── GetUpcomingAnime.kt
│       │       │           └── manga/
│       │       │               └── interactor/
│       │       │                   └── GetUpcomingManga.kt
│       │       └── tachiyomi/
│       │           └── domain/
│       │               ├── backup/
│       │               │   └── service/
│       │               │       ├── BackupPreferences.kt
│       │               │       └── PreferenceValues.kt
│       │               ├── category/
│       │               │   ├── anime/
│       │               │   │   ├── interactor/
│       │               │   │   │   ├── CreateAnimeCategoryWithName.kt
│       │               │   │   │   ├── DeleteAnimeCategory.kt
│       │               │   │   │   ├── GetAnimeCategories.kt
│       │               │   │   │   ├── GetVisibleAnimeCategories.kt
│       │               │   │   │   ├── HideAnimeCategory.kt
│       │               │   │   │   ├── RenameAnimeCategory.kt
│       │               │   │   │   ├── ReorderAnimeCategory.kt
│       │               │   │   │   ├── ResetAnimeCategoryFlags.kt
│       │               │   │   │   ├── SetAnimeCategories.kt
│       │               │   │   │   ├── SetAnimeDisplayMode.kt
│       │               │   │   │   ├── SetSortModeForAnimeCategory.kt
│       │               │   │   │   └── UpdateAnimeCategory.kt
│       │               │   │   └── repository/
│       │               │   │       └── AnimeCategoryRepository.kt
│       │               │   ├── manga/
│       │               │   │   ├── interactor/
│       │               │   │   │   ├── CreateMangaCategoryWithName.kt
│       │               │   │   │   ├── DeleteMangaCategory.kt
│       │               │   │   │   ├── GetMangaCategories.kt
│       │               │   │   │   ├── GetVisibleMangaCategories.kt
│       │               │   │   │   ├── HideMangaCategory.kt
│       │               │   │   │   ├── RenameMangaCategory.kt
│       │               │   │   │   ├── ReorderMangaCategory.kt
│       │               │   │   │   ├── ResetMangaCategoryFlags.kt
│       │               │   │   │   ├── SetMangaCategories.kt
│       │               │   │   │   ├── SetMangaDisplayMode.kt
│       │               │   │   │   ├── SetSortModeForMangaCategory.kt
│       │               │   │   │   └── UpdateMangaCategory.kt
│       │               │   │   └── repository/
│       │               │   │       └── MangaCategoryRepository.kt
│       │               │   └── model/
│       │               │       ├── Category.kt
│       │               │       └── CategoryUpdate.kt
│       │               ├── custombuttons/
│       │               │   ├── exception/
│       │               │   │   └── SaveCustomButtonException.kt
│       │               │   ├── interactor/
│       │               │   │   ├── CreateCustomButton.kt
│       │               │   │   ├── DeleteCustomButton.kt
│       │               │   │   ├── GetCustomButtons.kt
│       │               │   │   ├── ReorderCustomButton.kt
│       │               │   │   ├── ToggleFavoriteCustomButton.kt
│       │               │   │   └── UpdateCustomButton.kt
│       │               │   ├── model/
│       │               │   │   ├── CustomButton.kt
│       │               │   │   └── CustomButtonUpdate.kt
│       │               │   └── repository/
│       │               │       └── CustomButtonRepository.kt
│       │               ├── download/
│       │               │   └── service/
│       │               │       └── DownloadPreferences.kt
│       │               ├── entries/
│       │               │   ├── EntryCover.kt
│       │               │   ├── TriState.kt
│       │               │   ├── anime/
│       │               │   │   ├── interactor/
│       │               │   │   │   ├── AnimeFetchInterval.kt
│       │               │   │   │   ├── GetAnime.kt
│       │               │   │   │   ├── GetAnimeByUrlAndSourceId.kt
│       │               │   │   │   ├── GetAnimeFavorites.kt
│       │               │   │   │   ├── GetAnimeWithEpisodesAndSeasons.kt
│       │               │   │   │   ├── GetDuplicateLibraryAnime.kt
│       │               │   │   │   ├── GetLibraryAnime.kt
│       │               │   │   │   ├── NetworkToLocalAnime.kt
│       │               │   │   │   ├── ResetAnimeViewerFlags.kt
│       │               │   │   │   ├── SetAnimeEpisodeFlags.kt
│       │               │   │   │   └── SetAnimeSeasonFlags.kt
│       │               │   │   ├── model/
│       │               │   │   │   ├── Anime.kt
│       │               │   │   │   ├── AnimeCover.kt
│       │               │   │   │   ├── AnimeUpdate.kt
│       │               │   │   │   └── NoSeasonsException.kt
│       │               │   │   └── repository/
│       │               │   │       └── AnimeRepository.kt
│       │               │   └── manga/
│       │               │       ├── interactor/
│       │               │       │   ├── GetDuplicateLibraryManga.kt
│       │               │       │   ├── GetLibraryManga.kt
│       │               │       │   ├── GetManga.kt
│       │               │       │   ├── GetMangaByUrlAndSourceId.kt
│       │               │       │   ├── GetMangaFavorites.kt
│       │               │       │   ├── GetMangaWithChapters.kt
│       │               │       │   ├── MangaFetchInterval.kt
│       │               │       │   ├── NetworkToLocalManga.kt
│       │               │       │   ├── ResetMangaViewerFlags.kt
│       │               │       │   └── SetMangaChapterFlags.kt
│       │               │       ├── model/
│       │               │       │   ├── Manga.kt
│       │               │       │   ├── MangaCover.kt
│       │               │       │   └── MangaUpdate.kt
│       │               │       └── repository/
│       │               │           └── MangaRepository.kt
│       │               ├── history/
│       │               │   ├── anime/
│       │               │   │   ├── interactor/
│       │               │   │   │   ├── GetAnimeHistory.kt
│       │               │   │   │   ├── GetNextEpisodes.kt
│       │               │   │   │   ├── RemoveAnimeHistory.kt
│       │               │   │   │   └── UpsertAnimeHistory.kt
│       │               │   │   ├── model/
│       │               │   │   │   ├── AnimeHistory.kt
│       │               │   │   │   ├── AnimeHistoryUpdate.kt
│       │               │   │   │   └── AnimeHistoryWithRelations.kt
│       │               │   │   └── repository/
│       │               │   │       └── AnimeHistoryRepository.kt
│       │               │   └── manga/
│       │               │       ├── interactor/
│       │               │       │   ├── GetMangaHistory.kt
│       │               │       │   ├── GetNextChapters.kt
│       │               │       │   ├── GetTotalReadDuration.kt
│       │               │       │   ├── RemoveMangaHistory.kt
│       │               │       │   └── UpsertMangaHistory.kt
│       │               │       ├── model/
│       │               │       │   ├── MangaHistory.kt
│       │               │       │   ├── MangaHistoryUpdate.kt
│       │               │       │   └── MangaHistoryWithRelations.kt
│       │               │       └── repository/
│       │               │           └── MangaHistoryRepository.kt
│       │               ├── items/
│       │               │   ├── chapter/
│       │               │   │   ├── interactor/
│       │               │   │   │   ├── GetChapter.kt
│       │               │   │   │   ├── GetChapterByUrlAndMangaId.kt
│       │               │   │   │   ├── GetChaptersByMangaId.kt
│       │               │   │   │   ├── SetMangaDefaultChapterFlags.kt
│       │               │   │   │   ├── ShouldUpdateDbChapter.kt
│       │               │   │   │   └── UpdateChapter.kt
│       │               │   │   ├── model/
│       │               │   │   │   ├── Chapter.kt
│       │               │   │   │   ├── ChapterUpdate.kt
│       │               │   │   │   └── NoChaptersException.kt
│       │               │   │   ├── repository/
│       │               │   │   │   └── ChapterRepository.kt
│       │               │   │   └── service/
│       │               │   │       ├── ChapterRecognition.kt
│       │               │   │       ├── ChapterSorter.kt
│       │               │   │       └── MissingChapters.kt
│       │               │   ├── episode/
│       │               │   │   ├── interactor/
│       │               │   │   │   ├── GetEpisode.kt
│       │               │   │   │   ├── GetEpisodeByUrlAndAnimeId.kt
│       │               │   │   │   ├── GetEpisodesByAnimeId.kt
│       │               │   │   │   ├── SetAnimeDefaultEpisodeFlags.kt
│       │               │   │   │   ├── ShouldUpdateDbEpisode.kt
│       │               │   │   │   └── UpdateEpisode.kt
│       │               │   │   ├── model/
│       │               │   │   │   ├── Episode.kt
│       │               │   │   │   ├── EpisodeUpdate.kt
│       │               │   │   │   └── NoEpisodesException.kt
│       │               │   │   ├── repository/
│       │               │   │   │   └── EpisodeRepository.kt
│       │               │   │   └── service/
│       │               │   │       ├── EpisodeRecognition.kt
│       │               │   │       ├── EpisodeSorter.kt
│       │               │   │       └── MissingEpisodes.kt
│       │               │   └── season/
│       │               │       ├── interactor/
│       │               │       │   ├── GetAnimeSeasonsByParentId.kt
│       │               │       │   ├── SetAnimeDefaultSeasonFlags.kt
│       │               │       │   └── ShouldUpdateDbSeason.kt
│       │               │       └── service/
│       │               │           ├── SeasonRecognition.kt
│       │               │           └── SeasonSorter.kt
│       │               ├── library/
│       │               │   ├── anime/
│       │               │   │   ├── LibraryAnime.kt
│       │               │   │   └── model/
│       │               │   │       └── AnimeLibrarySortMode.kt
│       │               │   ├── manga/
│       │               │   │   ├── LibraryManga.kt
│       │               │   │   └── model/
│       │               │   │       └── MangaLibrarySortMode.kt
│       │               │   ├── model/
│       │               │   │   ├── Flag.kt
│       │               │   │   └── LibraryDisplayMode.kt
│       │               │   └── service/
│       │               │       └── LibraryPreferences.kt
│       │               ├── release/
│       │               │   ├── interactor/
│       │               │   │   └── GetApplicationRelease.kt
│       │               │   ├── model/
│       │               │   │   └── Release.kt
│       │               │   └── service/
│       │               │       └── ReleaseService.kt
│       │               ├── source/
│       │               │   ├── anime/
│       │               │   │   ├── interactor/
│       │               │   │   │   ├── GetAnimeSourcesWithNonLibraryAnime.kt
│       │               │   │   │   └── GetRemoteAnime.kt
│       │               │   │   ├── model/
│       │               │   │   │   ├── AnimeSource.kt
│       │               │   │   │   ├── AnimeSourceWithIds.kt
│       │               │   │   │   ├── DeletableAnime.kt
│       │               │   │   │   ├── Pin.kt
│       │               │   │   │   └── StubAnimeSource.kt
│       │               │   │   ├── repository/
│       │               │   │   │   ├── AnimeSourceRepository.kt
│       │               │   │   │   └── AnimeStubSourceRepository.kt
│       │               │   │   └── service/
│       │               │   │       └── AnimeSourceManager.kt
│       │               │   └── manga/
│       │               │       ├── interactor/
│       │               │       │   ├── GetMangaSourcesWithNonLibraryManga.kt
│       │               │       │   └── GetRemoteManga.kt
│       │               │       ├── model/
│       │               │       │   ├── MangaSourceWithCount.kt
│       │               │       │   ├── Pin.kt
│       │               │       │   ├── Source.kt
│       │               │       │   └── StubMangaSource.kt
│       │               │       ├── repository/
│       │               │       │   ├── MangaSourceRepository.kt
│       │               │       │   └── MangaStubSourceRepository.kt
│       │               │       └── service/
│       │               │           └── MangaSourceManager.kt
│       │               ├── storage/
│       │               │   └── service/
│       │               │       ├── StorageManager.kt
│       │               │       └── StoragePreferences.kt
│       │               ├── track/
│       │               │   ├── anime/
│       │               │   │   ├── interactor/
│       │               │   │   │   ├── DeleteAnimeTrack.kt
│       │               │   │   │   ├── GetAnimeTracks.kt
│       │               │   │   │   ├── GetTracksPerAnime.kt
│       │               │   │   │   └── InsertAnimeTrack.kt
│       │               │   │   ├── model/
│       │               │   │   │   └── AnimeTrack.kt
│       │               │   │   └── repository/
│       │               │   │       └── AnimeTrackRepository.kt
│       │               │   └── manga/
│       │               │       ├── interactor/
│       │               │       │   ├── DeleteMangaTrack.kt
│       │               │       │   ├── GetMangaTracks.kt
│       │               │       │   ├── GetTracksPerManga.kt
│       │               │       │   └── InsertMangaTrack.kt
│       │               │       ├── model/
│       │               │       │   └── MangaTrack.kt
│       │               │       └── repository/
│       │               │           └── MangaTrackRepository.kt
│       │               └── updates/
│       │                   ├── anime/
│       │                   │   ├── interactor/
│       │                   │   │   └── GetAnimeUpdates.kt
│       │                   │   ├── model/
│       │                   │   │   └── AnimeUpdatesWithRelations.kt
│       │                   │   └── repository/
│       │                   │       └── AnimeUpdatesRepository.kt
│       │                   └── manga/
│       │                       ├── interactor/
│       │                       │   └── GetMangaUpdates.kt
│       │                       ├── model/
│       │                       │   └── MangaUpdatesWithRelations.kt
│       │                       └── repository/
│       │                           └── MangaUpdatesRepository.kt
│       └── test/
│           └── java/
│               └── tachiyomi/
│                   └── domain/
│                       ├── entries/
│                       │   ├── anime/
│                       │   │   └── interactor/
│                       │   │       └── AnimeFetchIntervalTest.kt
│                       │   └── manga/
│                       │       └── interactor/
│                       │           └── MangaFetchIntervalTest.kt
│                       ├── items/
│                       │   ├── chapter/
│                       │   │   └── service/
│                       │   │       └── ChapterRecognitionTest.kt
│                       │   └── service/
│                       │       └── MissingItemsTest.kt
│                       ├── library/
│                       │   └── model/
│                       │       └── LibraryFlagsTest.kt
│                       └── release/
│                           └── interactor/
│                               └── GetApplicationReleaseTest.kt
├── fastlane/
│   └── metadata/
│       └── android/
│           └── en-US/
│               ├── full_description.txt
│               └── short_description.txt
├── gradle/
│   ├── androidx.versions.toml
│   ├── aniyomi.versions.toml
│   ├── compose.versions.toml
│   ├── gradle-daemon-jvm.properties
│   ├── kotlinx.versions.toml
│   ├── libs.versions.toml
│   └── wrapper/
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── i18n/
│   ├── README.md
│   ├── build.gradle.kts
│   └── src/
│       ├── commonMain/
│       │   └── moko-resources/
│       │       ├── am/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── ar/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── as/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── base/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── be/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── bg/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── bn/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── ca/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── ceb/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── cs/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── cv/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── da/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── de/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── el/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── eo/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── es/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── eu/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── fa/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── fi/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── fil/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── fr/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── gl/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── he/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── hi/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── hr/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── hu/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── in/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── it/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── ja/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── jv/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── ka-rGE/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── kk/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── km/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── kn/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── ko/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── lt/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── lv/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── ml/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── mr/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── ms/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── my/
│       │       │   └── strings.xml
│       │       ├── nb-rNO/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── ne/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── nl/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── nn/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── pl/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── pt/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── pt-rBR/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── ro/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── ru/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── sa/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── sah/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── sc/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── sdh/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── sk/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── sq/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── sr/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── sv/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── ta/
│       │       │   └── strings.xml
│       │       ├── te/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── th/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── tr/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── uk/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── uz/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── vi/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── zh-rCN/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       └── zh-rTW/
│       │           ├── plurals.xml
│       │           └── strings.xml
│       └── main/
│           └── AndroidManifest.xml
├── i18n-aniyomi/
│   ├── build.gradle.kts
│   └── src/
│       └── commonMain/
│           └── moko-resources/
│               ├── am/
│               │   └── strings.xml
│               ├── ar/
│               │   ├── plurals.xml
│               │   └── strings.xml
│               ├── as/
│               │   └── strings.xml
│               ├── base/
│               │   ├── plurals.xml
│               │   └── strings.xml
│               ├── be/
│               │   └── strings.xml
│               ├── bg/
│               │   └── strings.xml
│               ├── bn/
│               │   └── strings.xml
│               ├── ca/
│               │   ├── plurals.xml
│               │   └── strings.xml
│               ├── ceb/
│               │   └── strings.xml
│               ├── cs/
│               │   ├── plurals.xml
│               │   └── strings.xml
│               ├── cv/
│               │   └── strings.xml
│               ├── da/
│               │   └── strings.xml
│               ├── de/
│               │   ├── plurals.xml
│               │   └── strings.xml
│               ├── el/
│               │   └── strings.xml
│               ├── eo/
│               │   └── strings.xml
│               ├── es/
│               │   ├── plurals.xml
│               │   └── strings.xml
│               ├── eu/
│               │   └── strings.xml
│               ├── fa/
│               │   ├── plurals.xml
│               │   └── strings.xml
│               ├── fi/
│               │   ├── plurals.xml
│               │   └── strings.xml
│               ├── fil/
│               │   ├── plurals.xml
│               │   └── strings.xml
│               ├── fr/
│               │   ├── plurals.xml
│               │   └── strings.xml
│               ├── gl/
│               │   └── strings.xml
│               ├── he/
│               │   ├── plurals.xml
│               │   └── strings.xml
│               ├── hi/
│               │   └── strings.xml
│               ├── hr/
│               │   ├── plurals.xml
│               │   └── strings.xml
│               ├── hu/
│               │   └── strings.xml
│               ├── in/
│               │   ├── plurals.xml
│               │   └── strings.xml
│               ├── it/
│               │   ├── plurals.xml
│               │   └── strings.xml
│               ├── ja/
│               │   └── strings.xml
│               ├── jv/
│               │   └── strings.xml
│               ├── ka-rGE/
│               │   └── strings.xml
│               ├── kk/
│               │   └── strings.xml
│               ├── km/
│               │   └── strings.xml
│               ├── kn/
│               │   └── strings.xml
│               ├── ko/
│               │   ├── plurals.xml
│               │   └── strings.xml
│               ├── lt/
│               │   └── strings.xml
│               ├── lv/
│               │   └── strings.xml
│               ├── ml/
│               │   └── strings.xml
│               ├── mr/
│               │   └── strings.xml
│               ├── ms/
│               │   └── strings.xml
│               ├── my/
│               │   └── strings.xml
│               ├── nb-rNO/
│               │   └── strings.xml
│               ├── ne/
│               │   └── strings.xml
│               ├── nl/
│               │   └── strings.xml
│               ├── nn/
│               │   └── strings.xml
│               ├── pl/
│               │   ├── plurals.xml
│               │   └── strings.xml
│               ├── pt/
│               │   ├── plurals.xml
│               │   └── strings.xml
│               ├── pt-rBR/
│               │   ├── plurals.xml
│               │   └── strings.xml
│               ├── ro/
│               │   └── strings.xml
│               ├── ru/
│               │   └── strings.xml
│               ├── sa/
│               │   └── strings.xml
│               ├── sah/
│               │   └── strings.xml
│               ├── sc/
│               │   └── strings.xml
│               ├── sdh/
│               │   └── strings.xml
│               ├── sk/
│               │   └── strings.xml
│               ├── sq/
│               │   └── strings.xml
│               ├── sr/
│               │   └── strings.xml
│               ├── sv/
│               │   └── strings.xml
│               ├── ta/
│               │   └── strings.xml
│               ├── te/
│               │   └── strings.xml
│               ├── th/
│               │   └── strings.xml
│               ├── tr/
│               │   ├── plurals.xml
│               │   └── strings.xml
│               ├── uk/
│               │   ├── plurals.xml
│               │   └── strings.xml
│               ├── ur/
│               │   └── strings.xml
│               ├── uz/
│               │   └── strings.xml
│               ├── vi/
│               │   └── strings.xml
│               ├── zh-rCN/
│               │   ├── plurals.xml
│               │   └── strings.xml
│               └── zh-rTW/
│                   └── strings.xml
├── macrobenchmark/
│   ├── README.md
│   ├── build.gradle.kts
│   └── src/
│       └── main/
│           ├── AndroidManifest.xml
│           └── java/
│               └── tachiyomi/
│                   └── macrobenchmark/
│                       ├── BaselineProfileGenerator.kt
│                       └── StartupBenchmark.kt
├── presentation-core/
│   ├── build.gradle.kts
│   ├── consumer-rules.pro
│   ├── proguard-rules.pro
│   └── src/
│       └── main/
│           ├── AndroidManifest.xml
│           ├── java/
│           │   ├── mihon/
│           │   │   └── presentation/
│           │   │       └── core/
│           │   │           └── util/
│           │   │               └── PagingDataUtil.kt
│           │   └── tachiyomi/
│           │       └── presentation/
│           │           └── core/
│           │               ├── components/
│           │               │   ├── ActionButton.kt
│           │               │   ├── AdaptiveSheet.kt
│           │               │   ├── Badges.kt
│           │               │   ├── CircularProgressIndicator.kt
│           │               │   ├── CollapsibleBox.kt
│           │               │   ├── LabeledCheckbox.kt
│           │               │   ├── LazyColumnWithAction.kt
│           │               │   ├── LazyGrid.kt
│           │               │   ├── LazyList.kt
│           │               │   ├── LinkIcon.kt
│           │               │   ├── ListGroupHeader.kt
│           │               │   ├── Pill.kt
│           │               │   ├── SectionCard.kt
│           │               │   ├── SettingsItems.kt
│           │               │   ├── TwoPanelBox.kt
│           │               │   ├── VerticalFastScroller.kt
│           │               │   ├── WheelPicker.kt
│           │               │   └── material/
│           │               │       ├── AlertDialog.kt
│           │               │       ├── Button.kt
│           │               │       ├── Constants.kt
│           │               │       ├── FloatingActionButton.kt
│           │               │       ├── IconButtonTokens.kt
│           │               │       ├── IconToggleButton.kt
│           │               │       ├── NavigationBar.kt
│           │               │       ├── NavigationRail.kt
│           │               │       ├── PullRefresh.kt
│           │               │       ├── Scaffold.kt
│           │               │       ├── Slider.kt
│           │               │       ├── Surface.kt
│           │               │       └── Tabs.kt
│           │               ├── i18n/
│           │               │   └── Localize.kt
│           │               ├── icons/
│           │               │   ├── CustomIcons.kt
│           │               │   ├── Discord.kt
│           │               │   └── Github.kt
│           │               ├── screens/
│           │               │   ├── EmptyScreen.kt
│           │               │   ├── InfoScreen.kt
│           │               │   └── LoadingScreen.kt
│           │               ├── theme/
│           │               │   ├── Color.kt
│           │               │   └── Typography.kt
│           │               └── util/
│           │                   ├── Elevation.kt
│           │                   ├── LazyListState.kt
│           │                   ├── Modifier.kt
│           │                   ├── PaddingValues.kt
│           │                   ├── Preference.kt
│           │                   ├── Scrollbar.kt
│           │                   └── ThemePreviews.kt
│           └── res/
│               ├── values/
│               │   ├── color_cloudflare.xml
│               │   ├── color_doom.xml
│               │   ├── color_lavender.xml
│               │   ├── color_matrix.xml
│               │   ├── color_sapphire.xml
│               │   ├── colors.xml
│               │   ├── colors_greenapple.xml
│               │   ├── colors_midnightdusk.xml
│               │   ├── colors_monochrome.xml
│               │   ├── colors_nord.xml
│               │   ├── colors_strawberry.xml
│               │   ├── colors_tachiyomi.xml
│               │   ├── colors_tako.xml
│               │   ├── colors_tealturqoise.xml
│               │   ├── colors_tidalwave.xml
│               │   ├── colors_yinyang.xml
│               │   └── colors_yotsuba.xml
│               └── values-night/
│                   ├── color_cloudflare.xml
│                   ├── color_doom.xml
│                   ├── color_lavender.xml
│                   ├── color_matrix.xml
│                   ├── color_sapphire.xml
│                   ├── colors.xml
│                   ├── colors_greenapple.xml
│                   ├── colors_midnightdusk.xml
│                   ├── colors_monochrome.xml
│                   ├── colors_nord.xml
│                   ├── colors_strawberry.xml
│                   ├── colors_tachiyomi.xml
│                   ├── colors_tako.xml
│                   ├── colors_tealturqoise.xml
│                   ├── colors_tidalwave.xml
│                   ├── colors_yinyang.xml
│                   └── colors_yotsuba.xml
├── presentation-widget/
│   ├── build.gradle.kts
│   ├── consumer-rules.pro
│   ├── proguard-rules.pro
│   └── src/
│       └── main/
│           ├── AndroidManifest.xml
│           ├── java/
│           │   └── tachiyomi/
│           │       └── presentation/
│           │           └── widget/
│           │               ├── components/
│           │               │   ├── anime/
│           │               │   │   ├── LockedAnimeWidget.kt
│           │               │   │   ├── UpdatesAnimeCover.kt
│           │               │   │   └── UpdatesAnimeWidget.kt
│           │               │   └── manga/
│           │               │       ├── LockedMangaWidget.kt
│           │               │       ├── UpdatesMangaCover.kt
│           │               │       └── UpdatesMangaWidget.kt
│           │               ├── entries/
│           │               │   ├── anime/
│           │               │   │   ├── AnimeUpdatesGridCoverScreenGlanceReceiver.kt
│           │               │   │   ├── AnimeUpdatesGridCoverScreenGlanceWidget.kt
│           │               │   │   ├── AnimeUpdatesGridGlanceReceiver.kt
│           │               │   │   ├── AnimeUpdatesGridGlanceWidget.kt
│           │               │   │   ├── AnimeWidgetManager.kt
│           │               │   │   └── BaseAnimeUpdatesGridGlanceWidget.kt
│           │               │   └── manga/
│           │               │       ├── BaseMangaUpdatesGridGlanceWidget.kt
│           │               │       ├── MangaUpdatesGridCoverScreenGlanceReceiver.kt
│           │               │       ├── MangaUpdatesGridCoverScreenGlanceWidget.kt
│           │               │       ├── MangaUpdatesGridGlanceReceiver.kt
│           │               │       ├── MangaUpdatesGridGlanceWidget.kt
│           │               │       └── MangaWidgetManager.kt
│           │               └── util/
│           │                   └── GlanceUtils.kt
│           └── res/
│               ├── drawable/
│               │   ├── appwidget_background.xml
│               │   ├── appwidget_cover_error.xml
│               │   └── appwidget_coverscreen_background.xml
│               ├── layout/
│               │   ├── appwidget_coverscreen_loading.xml
│               │   └── appwidget_loading.xml
│               ├── values/
│               │   ├── colors_appwidget.xml
│               │   └── dimens.xml
│               ├── values-night-v31/
│               │   └── colors_appwidget.xml
│               ├── values-v31/
│               │   ├── colors_appwidget.xml
│               │   └── dimens.xml
│               └── xml/
│                   ├── updates_grid_homescreen_widget_info.xml
│                   ├── updates_grid_lockscreen_widget_info.xml
│                   └── updates_grid_samsung_cover_widget_info.xml
├── settings.gradle.kts
├── source-api/
│   ├── build.gradle.kts
│   ├── consumer-proguard.pro
│   └── src/
│       ├── androidMain/
│       │   ├── AndroidManifest.xml
│       │   └── kotlin/
│       │       └── eu/
│       │           └── kanade/
│       │               └── tachiyomi/
│       │                   ├── animesource/
│       │                   │   └── PreferenceScreen.kt
│       │                   ├── source/
│       │                   │   └── PreferenceScreen.kt
│       │                   └── util/
│       │                       └── RxExtension.kt
│       └── commonMain/
│           └── kotlin/
│               └── eu/
│                   └── kanade/
│                       └── tachiyomi/
│                           ├── animesource/
│                           │   ├── AnimeCatalogueSource.kt
│                           │   ├── AnimeSource.kt
│                           │   ├── AnimeSourceFactory.kt
│                           │   ├── ConfigurableAnimeSource.kt
│                           │   ├── PreferenceScreen.kt
│                           │   ├── UnmeteredSource.kt
│                           │   ├── model/
│                           │   │   ├── AnimeFilter.kt
│                           │   │   ├── AnimeFilterList.kt
│                           │   │   ├── AnimeUpdateStrategy.kt
│                           │   │   ├── AnimesPage.kt
│                           │   │   ├── FetchType.kt
│                           │   │   ├── Hoster.kt
│                           │   │   ├── SAnime.kt
│                           │   │   ├── SAnimeImpl.kt
│                           │   │   ├── SEpisode.kt
│                           │   │   ├── SEpisodeImpl.kt
│                           │   │   └── Video.kt
│                           │   ├── online/
│                           │   │   ├── AnimeHttpSource.kt
│                           │   │   ├── ParsedAnimeHttpSource.kt
│                           │   │   └── ResolvableAnimeSource.kt
│                           │   └── utils/
│                           │       └── Preferences.kt
│                           ├── source/
│                           │   ├── CatalogueSource.kt
│                           │   ├── ConfigurableSource.kt
│                           │   ├── MangaSource.kt
│                           │   ├── PreferenceScreen.kt
│                           │   ├── SourceFactory.kt
│                           │   ├── UnmeteredSource.kt
│                           │   ├── model/
│                           │   │   ├── Filter.kt
│                           │   │   ├── FilterList.kt
│                           │   │   ├── MangasPage.kt
│                           │   │   ├── Page.kt
│                           │   │   ├── SChapter.kt
│                           │   │   ├── SChapterImpl.kt
│                           │   │   ├── SManga.kt
│                           │   │   ├── SMangaImpl.kt
│                           │   │   └── UpdateStrategy.kt
│                           │   └── online/
│                           │       ├── HttpSource.kt
│                           │       ├── ParsedHttpSource.kt
│                           │       └── ResolvableSource.kt
│                           └── util/
│                               ├── JsonExtensions.kt
│                               ├── JsoupExtensions.kt
│                               ├── RxExtension.kt
│                               └── VideoInfo.kt
└── source-local/
    ├── build.gradle.kts
    ├── consumer-rules.pro
    ├── proguard-rules.pro
    └── src/
        ├── androidMain/
        │   ├── AndroidManifest.xml
        │   └── kotlin/
        │       └── tachiyomi/
        │           └── source/
        │               └── local/
        │                   ├── entries/
        │                   │   ├── anime/
        │                   │   │   ├── LocalAnimeFetchTypeManager.kt
        │                   │   │   └── LocalAnimeSource.kt
        │                   │   └── manga/
        │                   │       └── LocalMangaSource.kt
        │                   ├── filter/
        │                   │   ├── anime/
        │                   │   │   └── AnimeOrderBy.kt
        │                   │   └── manga/
        │                   │       └── MangaOrderBy.kt
        │                   ├── image/
        │                   │   ├── anime/
        │                   │   │   ├── LocalAnimeBackgroundManager.kt
        │                   │   │   ├── LocalAnimeCoverManager.kt
        │                   │   │   └── LocalEpisodeThumbnailManager.kt
        │                   │   └── manga/
        │                   │       └── LocalMangaCoverManager.kt
        │                   ├── io/
        │                   │   ├── anime/
        │                   │   │   └── LocalAnimeSourceFileSystem.kt
        │                   │   └── manga/
        │                   │       └── LocalMangaSourceFileSystem.kt
        │                   └── metadata/
        │                       └── EpubReaderExtensions.kt
        └── commonMain/
            └── kotlin/
                └── tachiyomi/
                    └── source/
                        └── local/
                            ├── entries/
                            │   ├── anime/
                            │   │   ├── LocalAnimeFetchTypeManager.kt
                            │   │   └── LocalAnimeSource.kt
                            │   └── manga/
                            │       └── LocalMangaSource.kt
                            ├── image/
                            │   ├── anime/
                            │   │   ├── LocalAnimeBackgroundManager.kt
                            │   │   ├── LocalAnimeCoverManager.kt
                            │   │   └── LocalEpisodeThumbnailManager.kt
                            │   └── manga/
                            │       └── LocalMangaCoverManager.kt
                            └── io/
                                ├── Archive.kt
                                ├── Format.kt
                                ├── anime/
                                │   └── LocalAnimeSourceFileSystem.kt
                                └── manga/
                                    └── LocalMangaSourceFileSystem.kt

================================================
FILE CONTENTS
================================================

================================================
FILE: .editorconfig
================================================
root = true

[*]
charset = utf-8
indent_size = 2
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true

[*.xml]
indent_size = 4

# noinspection EditorConfigKeyCorrectness
[*.{kt,kts}]
indent_size = 4
max_line_length = 120

ij_kotlin_allow_trailing_comma = true
ij_kotlin_allow_trailing_comma_on_call_site = true
ij_kotlin_name_count_to_use_star_import = 2147483647
ij_kotlin_name_count_to_use_star_import_for_members = 2147483647

ktlint_code_style = intellij_idea
ktlint_function_naming_ignore_when_annotated_with = Composable
ktlint_standard_class-signature = disabled
ktlint_standard_discouraged-comment-location = disabled
ktlint_standard_function-expression-body = disabled
ktlint_standard_function-signature = disabled


================================================
FILE: .gitattributes
================================================
* text=auto
* text eol=lf

# Windows forced line-endings
/.idea/* text eol=crlf

# Gradle wrapper
*.jar binary

# Images
*.webp binary
*.png binary
*.jpg binary
*.jpeg binary
*.gif binary
*.ico binary
*.gz binary
*.zip binary
*.7z binary
*.ttf binary
*.eot binary
*.woff binary
*.pyc binary
*.swp binary


================================================
FILE: .github/FUNDING.yml
================================================
github: jmir1
ko_fi: jmir1


================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
  - name: ❌ Help with Extensions
    url: https://aniyomi.org/docs/faq/browse/extensions
    about: For extension-related questions/issues
  - name: 🧑‍💻 Aniyomi help discord
    url: https://discord.gg/F32UjdJZrR
    about: Common questions are answered here
  - name: 🖥️ Aniyomi website
    url: https://aniyomi.org/
    about: Guides, troubleshooting, and answers to common questions


================================================
FILE: .github/ISSUE_TEMPLATE/report_issue.yml
================================================
name: 🐞 Issue report
description: Report an issue in Aniyomi
labels: [Bug]
body:
  - type: textarea
    id: reproduce-steps
    attributes:
      label: Steps to reproduce
      description: Provide an example of the issue.
      placeholder: |
        Example:
          1. First step
          2. Second step
          3. Issue here
    validations:
      required: true

  - type: textarea
    id: expected-behavior
    attributes:
      label: Expected behavior
      description: Explain what you should expect to happen.
      placeholder: |
        Example:
          "This should happen..."
    validations:
      required: true

  - type: textarea
    id: actual-behavior
    attributes:
      label: Actual behavior
      description: Explain what actually happens.
      placeholder: |
        Example:
          "This happened instead..."
    validations:
      required: true

  - type: textarea
    id: crash-logs
    attributes:
      label: Crash logs
      description: |
        If you're experiencing crashes, if possible, go to the app's **More → Settings → Advanced** page, press **Dump crash logs** and share the crash logs here.
      placeholder: |
        You can upload the crash log file as an attachment, or paste the crash logs in plain text if needed.

  - type: input
    id: aniyomi-version
    attributes:
      label: Aniyomi version
      description: You can find your Aniyomi version in **More → About**.
      placeholder: |
        Example: "0.18.1.2"
    validations:
      required: true

  - type: input
    id: android-version
    attributes:
      label: Android version
      description: You can find this somewhere in your Android settings.
      placeholder: |
        Example: "Android 11"
    validations:
      required: true

  - type: input
    id: device
    attributes:
      label: Device
      description: List your device and model.
      placeholder: |
        Example: "Google Pixel 5"
    validations:
      required: true

  - type: textarea
    id: other-details
    attributes:
      label: Other details
      placeholder: |
        Additional details and attachments.

  - type: checkboxes
    id: acknowledgements
    attributes:
      label: Acknowledgements
      description: Read this carefully, we will close and ignore your issue if you skimmed through this.
      options:
        - label: I have searched the existing issues and this is a new ticket, **NOT** a duplicate or related to another open or closed issue.
          required: true
        - label: I have written a short but informative title.
          required: true
        - label: If this is an issue with an extension, I should be opening an issue in the extension's repository.
          required: true
        - label: I have gone through the [FAQ](https://aniyomi.org/docs/faq/general) and [troubleshooting guide](https://aniyomi.org/docs/guides/troubleshooting/).
          required: true
        - label: I have updated the app to version **[0.18.1.2](https://github.com/aniyomiorg/aniyomi/releases/latest)**.
          required: true
        - label: I have filled out all of the requested information in this form, including specific version numbers.
          required: true
        - label: I understand that **Aniyomi does not have or fix any extensions**, and I **will not receive help** for any issues related to sources or extensions.
          required: true


================================================
FILE: .github/ISSUE_TEMPLATE/request_feature.yml
================================================
name: ⭐ Feature request
description: Suggest a feature to improve Aniyomi
labels: [Feature request]
body:
  - type: textarea
    id: feature-description
    attributes:
      label: Describe your suggested feature
      description: How can Aniyomi be improved?
      placeholder: |
        Example:
          "It should work like this..."
    validations:
      required: true

  - type: textarea
    id: other-details
    attributes:
      label: Other details
      placeholder: |
        Additional details and attachments.

  - type: checkboxes
    id: acknowledgements
    attributes:
      label: Acknowledgements
      description: Read this carefully, we will close and ignore your issue if you skimmed through this.
      options:
        - label: I have searched the existing issues and this is a new ticket, **NOT** a duplicate or related to another open or closed issue.
          required: true
        - label: I have written a short but informative title.
          required: true
        - label: If this is a request regarding an extension, I should be opening an issue in the extension's repository.
          required: true
        - label: I have updated the app to version **[0.18.1.2](https://github.com/aniyomiorg/aniyomi/releases/latest)**.
          required: true
        - label: I will fill out all of the requested information in this form.
          required: true


================================================
FILE: .github/pull_request_template.md
================================================
<!--
  Please include a summary of the change and which issue is fixed.
  Also make sure you've tested your code and also done a self-review of it.
  Don't forget to check all base themes and tablet mode for relevant changes.
  
  If your changes are visual, please provide images below:

### Images
| Image 1 | Image 2 |
| ------- | ------- |
| ![](https://github.githubassets.com/images/modules/logos_page/Octocat.png) | ![](https://github.githubassets.com/images/modules/logos_page/Octocat.png) |
-->


================================================
FILE: .github/renovate.json5
================================================
{
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
  "extends": ["config:recommended"],
  "labels": ["Dependencies"],
  "includePaths": ["gradle/aniyomi.versions.toml"],
  "semanticCommits": "disabled",
}


================================================
FILE: .github/workflows/build_pull_request.yml
================================================
name: PR build check
on:
  pull_request:
    paths:
      - '**'
      - '!**.md'
      - '!i18n/src/commonMain/moko-resources/**/strings-aniyomi.xml'
      - '!i18n/src/commonMain/moko-resources/**/strings.xml'
      - '!i18n/src/commonMain/moko-resources/**/plurals-aniyomi.xml'
      - '!i18n/src/commonMain/moko-resources/**/plurals.xml'
      - 'i18n/src/commonMain/moko-resources/base/strings-aniyomi.xml'
      - 'i18n/src/commonMain/moko-resources/base/strings.xml'
      - 'i18n/src/commonMain/moko-resources/base/plurals-aniyomi.xml'
      - 'i18n/src/commonMain/moko-resources/base/plurals.xml'


concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
  cancel-in-progress: true

permissions:
  contents: read

jobs:
  build:
    name: Build app
    runs-on: 'ubuntu-24.04'

    steps:
      - name: Clone repo
        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2

      - name: Dependency Review
        uses: actions/dependency-review-action@3b139cfc5fae8b618d3eae3675e383bb1769c019 # v4.5.0

      - name: Set up JDK
        uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12 # v4.7.0
        with:
          java-version: 17
          distribution: temurin

      - name: Set up gradle
        uses: gradle/actions/setup-gradle@94baf225fe0a508e581a564467443d0e2379123b # v4.3.0

      - name: Check code format
        run: ./gradlew spotlessCheck

      - name: Build app
        run: ./gradlew assembleRelease

      - name: Run unit tests
        run: ./gradlew testReleaseUnitTest

      - name: Upload APK
        uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
        with:
          name: arm64-v8a-${{ github.sha }}
          path: app/build/outputs/apk/release/app-arm64-v8a-release-unsigned.apk

      - name: Upload mapping
        uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
        with:
          name: mapping-${{ github.sha }}
          path: app/build/outputs/mapping/release


================================================
FILE: .github/workflows/build_push.yml
================================================
name: CI

permissions:
  contents: write

on:
  push:
    branches:
      - '*'
    tags:
      - v*

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  build:
    name: Build app
    runs-on: ubuntu-latest

    steps:
      - name: Clone repo
        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2

      - name: Set up JDK
        uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12 # v4.7.0
        with:
          java-version: 17
          distribution: temurin

      - name: Set up gradle
        uses: gradle/actions/setup-gradle@94baf225fe0a508e581a564467443d0e2379123b # v4.3.0

      - name: Check code format
        run: ./gradlew spotlessCheck

      - name: Build app
        run: ./gradlew assembleRelease -Penable-updater

      - name: Run unit tests
        run: ./gradlew testReleaseUnitTest

      - name: Upload APK
        uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
        with:
          name: arm64-v8a-${{ github.sha }}
          path: app/build/outputs/apk/release/app-arm64-v8a-release-unsigned.apk

      - name: Upload mapping
        uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
        with:
          name: mapping-${{ github.sha }}
          path: app/build/outputs/mapping/release

      # Sign APK and create release for tags

      - name: Get tag name

        if: startsWith(github.ref, 'refs/tags/') && github.repository == 'aniyomiorg/aniyomi'
        run: |
          set -x
          echo "VERSION_TAG=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_ENV

      - name: Sign APK
        if: startsWith(github.ref, 'refs/tags/') && github.repository == 'aniyomiorg/aniyomi'
        uses: r0adkll/sign-android-release@f30bdd30588842ac76044ecdbd4b6d0e3e813478
        with:
          releaseDirectory: app/build/outputs/apk/release
          signingKeyBase64: ${{ secrets.SIGNING_KEY }}
          alias: ${{ secrets.ALIAS }}
          keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }}
          keyPassword: ${{ secrets.KEY_PASSWORD }}
        env:
          BUILD_TOOLS_VERSION: '35.0.1'

      - name: Clean up build artifacts
        if: startsWith(github.ref, 'refs/tags/') && github.repository == 'aniyomiorg/aniyomi'
        run: |
          set -e

          mv app/build/outputs/apk/release/app-universal-release-unsigned-signed.apk aniyomi-${{ env.VERSION_TAG }}.apk
          sha=`sha256sum aniyomi-${{ env.VERSION_TAG }}.apk | awk '{ print $1 }'`
          echo "APK_UNIVERSAL_SHA=$sha" >> $GITHUB_ENV

          mv app/build/outputs/apk/release/app-arm64-v8a-release-unsigned-signed.apk aniyomi-arm64-v8a-${{ env.VERSION_TAG }}.apk
          sha=`sha256sum aniyomi-arm64-v8a-${{ env.VERSION_TAG }}.apk | awk '{ print $1 }'`
          echo "APK_ARM64_V8A_SHA=$sha" >> $GITHUB_ENV

          mv app/build/outputs/apk/release/app-armeabi-v7a-release-unsigned-signed.apk aniyomi-armeabi-v7a-${{ env.VERSION_TAG }}.apk
          sha=`sha256sum aniyomi-armeabi-v7a-${{ env.VERSION_TAG }}.apk | awk '{ print $1 }'`
          echo "APK_ARMEABI_V7A_SHA=$sha" >> $GITHUB_ENV

          mv app/build/outputs/apk/release/app-x86-release-unsigned-signed.apk aniyomi-x86-${{ env.VERSION_TAG }}.apk
          sha=`sha256sum aniyomi-x86-${{ env.VERSION_TAG }}.apk | awk '{ print $1 }'`
          echo "APK_X86_SHA=$sha" >> $GITHUB_ENV

          mv app/build/outputs/apk/release/app-x86_64-release-unsigned-signed.apk aniyomi-x86_64-${{ env.VERSION_TAG }}.apk
          sha=`sha256sum aniyomi-x86_64-${{ env.VERSION_TAG }}.apk | awk '{ print $1 }'`
          echo "APK_X86_64_SHA=$sha" >> $GITHUB_ENV

      - name: Create Release
        if: startsWith(github.ref, 'refs/tags/') && github.repository == 'aniyomiorg/aniyomi'
        uses: softprops/action-gh-release@c95fe1489396fe8a9eb87c0abf8aa5b2ef267fda # v2.2.1
        with:
          tag_name: ${{ env.VERSION_TAG }}
          name: Aniyomi ${{ env.VERSION_TAG }}
          body: |
            ---

            ### Checksums

            | Variant | SHA-256 |
            | ------- | ------- |
            | Universal | ${{ env.APK_UNIVERSAL_SHA }}
            | arm64-v8a | ${{ env.APK_ARM64_V8A_SHA }}
            | armeabi-v7a | ${{ env.APK_ARMEABI_V7A_SHA }}
            | x86 | ${{ env.APK_X86_SHA }}
            | x86_64 | ${{ env.APK_X86_64_SHA }} |
          files: |
            aniyomi-${{ env.VERSION_TAG }}.apk
            aniyomi-arm64-v8a-${{ env.VERSION_TAG }}.apk
            aniyomi-armeabi-v7a-${{ env.VERSION_TAG }}.apk
            aniyomi-x86-${{ env.VERSION_TAG }}.apk
            aniyomi-x86_64-${{ env.VERSION_TAG }}.apk
          draft: true
          prerelease: false
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}


================================================
FILE: .gitignore
================================================
# Build files
.gradle
.kotlin
build

# IDE files
*.iml
.idea/*
!.idea/icon.png
/captures

# Configuration files
local.properties

# macOS specific files
.DS_Store


================================================
FILE: CHANGELOG.md
================================================
# Changelog

All notable changes to this project will be documented in this file.

The format is a modified version of [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
- `Added` - for new features.
- `Changed ` - for changes in existing functionality.
- `Improved` - for enhancement or optimization in existing functionality.
- `Removed` - for now removed features.
- `Fixed` - for any bug fixes.
- `Other` - for technical stuff.

## Unreleased

### Added

- Added a description for the horizontal seek gesture setting ([@kenkoro](https://github.com/kenkoro)) ([#2224](https://github.com/aniyomiorg/aniyomi/pull/2224))

### Fixed

- Swapped keyEvent listeners for left and right keyboard arrow keys as they were swapped in the code causing the opposite of the desired behavior([@alphastark](https://github.com/alphastark)) ([#2219](https://github.com/aniyomiorg/aniyomi/pull/2219))
- Fix some malformed translated strings that made the player quit when Aniskip was enabled ([@686udjie](https://github.com/686udjie)) ([#2217](https://github.com/aniyomiorg/aniyomi/pull/2217))

## [v0.18.1.2] - 2025-10-28
### Fixed

- Fix Hosters feature detection (again) ([@hollowshiroyuki](https://github.com/hollowshiroyuki)) ([#2216](https://github.com/aniyomiorg/aniyomi/pull/2216))

## [v0.18.1.1] - 2025-10-26
### Fixed

- Fix source Seasons/Hosters feature detection ([@hollowshiroyuki](https://github.com/hollowshiroyuki)) ([#2195](https://github.com/aniyomiorg/aniyomi/pull/2195))
- Fix shared download cache messing up downloaded episodes detection ([@choppeh](https://github.com/choppeh)) ([#2184](https://github.com/aniyomiorg/aniyomi/pull/2184))
- Fix Shikimori anime tracking ([@danya140](https://github.com/danya140)) ([#2205](https://github.com/aniyomiorg/aniyomi/pull/2205))

### Improved

- Make volume gesture the same sensitivity as brightness ([@jmir1](https://github.com/jmir1))

## [v0.18.1.0] - 2025-10-02
### Fixed

- Fix list view resetting scroll upon exiting child ([@quickdesh](https://github.com/quickdesh)) ([#1982](https://github.com/aniyomiorg/aniyomi/pull/1982))
- Fix episode number parsing ([@Secozzi](https://github.com/Secozzi)) ([#2096](https://github.com/aniyomiorg/aniyomi/pull/2096))
- Fix tracking menu not opening on add to library ([@Secozzi](https://github.com/Secozzi)) ([#2098](https://github.com/aniyomiorg/aniyomi/pull/2098))
- Fix stop/continue anime download button ([@Secozzi](https://github.com/Secozzi)) ([#2099](https://github.com/aniyomiorg/aniyomi/pull/2099))
- Fix creating/restoring backups between mihon and aniyomi ([@Secozzi](https://github.com/Secozzi)) ([#2117](https://github.com/aniyomiorg/aniyomi/pull/2117))

### Added

- Add support for new parameters from ext lib 16 ([@quickdesh](https://github.com/quickdesh)) ([#1982](https://github.com/aniyomiorg/aniyomi/pull/1982))
- Add player settings to the main settings screen ([@jmir1](https://github.com/jmir1)) ([#2081](https://github.com/aniyomiorg/aniyomi/pull/2081))
- Add seasons support ([@Secozzi](https://github.com/Secozzi)) ([#2095](https://github.com/aniyomiorg/aniyomi/pull/2095))

## [v0.18.0.1] - 2025-07-06
### Fixed

- Fix crash on migration ([@Secozzi](https://github.com/Secozzi)) ([#2079](https://github.com/aniyomiorg/aniyomi/pull/2079))

## [v0.18.0.0] - 2025-07-05
### Added

- Set mpv's media-title property ([@Secozzi](https://github.com/Secozzi)) ([#1672](https://github.com/aniyomiorg/aniyomi/pull/1672))
- Add mpvKt to external players ([@Secozzi](https://github.com/Secozzi)) ([#1674](https://github.com/aniyomiorg/aniyomi/pull/1674))
- Add video filters ([@abdallahmehiz](https://github.com/abdallahmehiz)) ([#1698](https://github.com/aniyomiorg/aniyomi/pull/1698))
- Show hours and minutes in relative time strings ([@jmir1](https://github.com/jmir1)) ([`1f3be7b`](https://github.com/aniyomiorg/aniyomi/commit/1f3be7b523136039b3b60213f2cee7959a9367d7))
  - Fix some issues with relative date calculations ([@jmir1](https://github.com/jmir1)) ([`03e1ecd`](https://github.com/aniyomiorg/aniyomi/commit/03e1ecd75edd2ea15dc8732ffeab32c6af26b202))
- Add better auto sub select ([@Secozzi](https://github.com/Secozzi)) ([#1706](https://github.com/aniyomiorg/aniyomi/pull/1706))
- Copy the file location when using ext downloader ([@quickdesh](https://github.com/quickdesh)) ([#1758](https://github.com/aniyomiorg/aniyomi/pull/1758))
- Replace player with mpvKt ([@Secozzi](https://github.com/Secozzi)) ([#1834](https://github.com/aniyomiorg/aniyomi/pull/1834), [#1855](https://github.com/aniyomiorg/aniyomi/pull/1855), [#1859](https://github.com/aniyomiorg/aniyomi/pull/1859), [#1860](https://github.com/aniyomiorg/aniyomi/pull/1860))
  - Move player preferences to separate section ([@Secozzi](https://github.com/Secozzi)) ([#1819](https://github.com/aniyomiorg/aniyomi/pull/1819))
- Implement video hosters ([@Secozzi](https://github.com/Secozzi)) ([#1892](https://github.com/aniyomiorg/aniyomi/pull/1892))
- Add size slider for the "List Display" Mode ([@MavikBow](https://github.com/MavikBow)) ([#1906](https://github.com/aniyomiorg/aniyomi/pull/1906))
  - Make the default list a set size and make browse list scale ([@MavikBow](https://github.com/MavikBow)) ([#1914](https://github.com/aniyomiorg/aniyomi/pull/1914))
- Allow negative brightness values (dimming) ([@jmir1](https://github.com/jmir1)) ([#1915](https://github.com/aniyomiorg/aniyomi/pull/1915))
- Add new lua functions for custom buttons ([@Secozzi](https://github.com/Secozzi)) ([#1980](https://github.com/aniyomiorg/aniyomi/pull/1980))
- Use timestamps provided by extensions ([@Secozzi](https://github.com/Secozzi)) ([#1983](https://github.com/aniyomiorg/aniyomi/pull/1983))
- Add titles to player sheets + consistency with More sheet ([@quickdesh](https://github.com/quickdesh)) ([#2015](https://github.com/aniyomiorg/aniyomi/pull/2015))
- Add script & script-opts editor to player settings ([@Secozzi](https://github.com/Secozzi)) ([#2019](https://github.com/aniyomiorg/aniyomi/pull/2019))

### Improved

- Show "Now" instead of "0 minutes ago" ([@Secozzi](https://github.com/Secozzi)) ([#1715](https://github.com/aniyomiorg/aniyomi/pull/1715))
- Add headers when using 1dm as external player ([@Secozzi](https://github.com/Secozzi)) ([#2032](https://github.com/aniyomiorg/aniyomi/pull/2032))

### Fixed

- Fix enhanced tracking for jellyfin ([@Secozzi](https://github.com/Secozzi)) ([#1656](https://github.com/aniyomiorg/aniyomi/pull/1656), [#1658](https://github.com/aniyomiorg/aniyomi/pull/1658))
- Use different status strings for anime trackers ([@jmir1](https://github.com/jmir1)) ([`74b32a3`](https://github.com/aniyomiorg/aniyomi/commit/74b32a3a0b323ed2f6f7929e131dcb4901e7bf9b))
- Fix Shikimori tracking for anime ([@jmir1](https://github.com/jmir1)) ([`58817c7`](https://github.com/aniyomiorg/aniyomi/commit/58817c724e2808072ff273329cee261d12084927))
- Group updates by date and not time ([@jmir1](https://github.com/jmir1)) ([`c83ebf3`](https://github.com/aniyomiorg/aniyomi/commit/c83ebf322f48d41ca1ad0105262160ecb7cde991))
- Fix airing time not showing ([@Secozzi](https://github.com/Secozzi)) ([#1720](https://github.com/aniyomiorg/aniyomi/pull/1720))
- Don't invalidate anime downloads on startup ([@Secozzi](https://github.com/Secozzi)) ([#1753](https://github.com/aniyomiorg/aniyomi/pull/1753))
- Fix hidden categories getting reset after delete/reorder ([@cuong-tran](https://github.com/cuong-tran)) ([#1780](https://github.com/aniyomiorg/aniyomi/pull/1780))
- Fix episode progress not being saved and duplicate tracks ([@perokhe](https://github.com/perokhe)) ([#1784](https://github.com/aniyomiorg/aniyomi/pull/1784), [#1785](https://github.com/aniyomiorg/aniyomi/pull/1785))
- Fix subtitle select not matching two letter language codes ([@Secozzi](https://github.com/Secozzi)) ([#1805](https://github.com/aniyomiorg/aniyomi/pull/1805))
- Fix potential intent extra npe ([@quickdesh](https://github.com/quickdesh)) ([#1816](https://github.com/aniyomiorg/aniyomi/pull/1816))
- Fix history date header duplication ([@quickdesh](https://github.com/quickdesh)) ([#1817](https://github.com/aniyomiorg/aniyomi/pull/1817))
- Fix migrations not getting context correctly ([@Secozzi](https://github.com/Secozzi)) ([#1820](https://github.com/aniyomiorg/aniyomi/pull/1820))
- Fix various issues due to replacing the player with mpvKt
  - Fix gesture seeking not seeking to start and end ([@perokhe](https://github.com/perokhe)) ([#1865](https://github.com/aniyomiorg/aniyomi/pull/1865))
  - Fix crash when opening player settings in tablet ui ([@Secozzi](https://github.com/Secozzi)) ([#1868](https://github.com/aniyomiorg/aniyomi/pull/1868))
  - Fix episode list in player not respecting filters & crash when exiting while stuff is loading ([@Secozzi](https://github.com/Secozzi)) ([#1869](https://github.com/aniyomiorg/aniyomi/pull/1869))
  - Fix episode being marked as seen at start ([@perokhe](https://github.com/perokhe)) ([#1871](https://github.com/aniyomiorg/aniyomi/pull/1871))
  - Fix player not being paused when loading tracks after changing quality ([@Secozzi](https://github.com/Secozzi)) ([#1878](https://github.com/aniyomiorg/aniyomi/pull/1878))
  - Fix lag when toggling player ui ([@Secozzi](https://github.com/Secozzi)) ([#1887](https://github.com/aniyomiorg/aniyomi/pull/1887))
  - Fix audio selection not working on external audio tracks ([@Secozzi](https://github.com/Secozzi)) ([#1901](https://github.com/aniyomiorg/aniyomi/pull/1901))
  - Reset "hide player controls time" when pressing custom button ([@Secozzi](https://github.com/Secozzi)) ([#1902](https://github.com/aniyomiorg/aniyomi/pull/1902))
  - Don't unpause on share and save ([@Secozzi](https://github.com/Secozzi)) ([#1905](https://github.com/aniyomiorg/aniyomi/pull/1905))
  - Fix player pausing with gesture seek ([@perokhe](https://github.com/perokhe)) ([#1916](https://github.com/aniyomiorg/aniyomi/pull/1916))
  - Fix potential npe issues with mpv-lib ([@Secozzi](https://github.com/Secozzi)) ([#1921](https://github.com/aniyomiorg/aniyomi/pull/1921))
  - Dismiss chapter sheet on chapter select ([@Secozzi](https://github.com/Secozzi)) ([#1976](https://github.com/aniyomiorg/aniyomi/pull/1976))
  - Fix some issues caused by [`10e28cc`](https://github.com/aniyomiorg/aniyomi/commit/10e28cc4092758cf38d27cc14aadf539698738f2) ([@Secozzi](https://github.com/Secozzi)) ([#1981](https://github.com/aniyomiorg/aniyomi/pull/1981))
  - Fix npe issue caused in player controls ([@Secozzi](https://github.com/Secozzi)) ([#1986](https://github.com/aniyomiorg/aniyomi/pull/1986))
- Replace some manga strings with respective anime strings ([@perokhe](https://github.com/perokhe)) ([#1864](https://github.com/aniyomiorg/aniyomi/pull/1864))
- Open correct tab from extension update notifications ([@jmir1](https://github.com/jmir1)) ([`161471d`](https://github.com/aniyomiorg/aniyomi/commit/161471d94a2350c0c983eeeccd3b7ac0dc66d429))
- Fix sub-auto not loading all external subtitle files ([@perokhe](https://github.com/perokhe)) ([#1866](https://github.com/aniyomiorg/aniyomi/pull/1866))
- Fix `ALSearchItem.format` nullability ([@Secozzi](https://github.com/Secozzi)) ([#1910](https://github.com/aniyomiorg/aniyomi/pull/1910))
- Don't format mpv preferences ([@Secozzi](https://github.com/Secozzi)) ([#1939](https://github.com/aniyomiorg/aniyomi/pull/1939))
- Prevent crash on app death when watching in external player ([@Secozzi](https://github.com/Secozzi)) ([#1945](https://github.com/aniyomiorg/aniyomi/pull/1945))
- Don't run unnecessary stuff when exiting the player ([@Secozzi](https://github.com/Secozzi)) ([#1961](https://github.com/aniyomiorg/aniyomi/pull/1961))
- Fix some downloader issues ([@Secozzi](https://github.com/Secozzi)) ([#1964](https://github.com/aniyomiorg/aniyomi/pull/1964))
  - Fix downloader not working for certain types of tracks & duration sometimes not being logged ([@Secozzi](https://github.com/Secozzi)) ([#2001](https://github.com/aniyomiorg/aniyomi/pull/2001))
- Fix some issues with intro skip length ([@jmir1](https://github.com/jmir1)) ([`72cac57`](https://github.com/aniyomiorg/aniyomi/commit/72cac57d8e66366cbc0f3106eb351c82250c460b), [`25dd3ea`](https://github.com/aniyomiorg/aniyomi/commit/25dd3ea69fb217de7b0485c29e4a9b970737fd45))
- Force clipboard to use UI thread when copying path for external players ([@quickdesh](https://github.com/quickdesh)) ([#1994](https://github.com/aniyomiorg/aniyomi/pull/1994))
- Use application directory for storing files used by mpv ([@Secozzi](https://github.com/Secozzi)) ([#1995](https://github.com/aniyomiorg/aniyomi/pull/1995))
- Update backup warning string (follow Mihon) ([@cuong-tran](https://github.com/cuong-tran)) ([#2012](https://github.com/aniyomiorg/aniyomi/pull/2012))
- Fix issues with episode deletion & more ([@quickdesh](https://github.com/quickdesh)) ([#2017](https://github.com/aniyomiorg/aniyomi/pull/2017))
- Fix vertical slider width issues and shift boost volume value to slider ([@quickdesh](https://github.com/quickdesh)) ([#2018](https://github.com/aniyomiorg/aniyomi/pull/2018))
- Fix MyAnimeList login ([@choppeh](https://github.com/choppeh)) ([#2035](https://github.com/aniyomiorg/aniyomi/pull/2035))
- Call sort methods for videos and hosters ([@cuong-tran](https://github.com/cuong-tran)) ([#2058](https://github.com/aniyomiorg/aniyomi/pull/2058))
- Invalidate preferred languages in settings ([@Secozzi](https://github.com/Secozzi)) ([#2075](https://github.com/aniyomiorg/aniyomi/pull/2075))
- Fix crash when using sort by airing time ([@quickdesh](https://github.com/quickdesh)) ([#2076](https://github.com/aniyomiorg/aniyomi/pull/2076))

### Other

- Merge from mihon until 0.16.5 ([@Secozzi](https://github.com/Secozzi)) ([#1663](https://github.com/aniyomiorg/aniyomi/pull/1663))
  - Merge until latest mihon commits ([@Secozzi](https://github.com/Secozzi)) ([#1693](https://github.com/aniyomiorg/aniyomi/pull/1693))
  - Merge until latest mihon commits (v0.17.0) ([@Secozzi](https://github.com/Secozzi)) ([#1804](https://github.com/aniyomiorg/aniyomi/pull/1804))
  - Merge until latest mihon commits (v0.18.0) ([@Secozzi](https://github.com/Secozzi)) ([#1863](https://github.com/aniyomiorg/aniyomi/pull/1863))
- Remove ACRA crash report analytics ([@jmir1](https://github.com/jmir1)) ([`d3c6a15`](https://github.com/aniyomiorg/aniyomi/commit/d3c6a159d82ca239c10e8f5822c3b2046c5545f2), [`5ae35c8`](https://github.com/aniyomiorg/aniyomi/commit/5ae35c891b90ae927200185641240280effaf667))

## [v0.16.4.3] - 2024-07-01
### Fixed

- Fix extensions disappearing due to errors with the ClassLoader ([@jmir1](https://github.com/jmir1)) ([`959f84a`](https://github.com/aniyomiorg/aniyomi/commit/959f84ab41859f90c458c076d83d363ae086e47f))

## [v0.16.4.2] - 2024-07-01
### Fixed

- Hotfix to eliminate all proguard issues causing errors and crashes ([@jmir1](https://github.com/jmir1)) ([`a8cd723`](https://github.com/aniyomiorg/aniyomi/commit/a8cd7233dfdf26c98ff86b1871a7ac5774379b5e), [`a7644c2`](https://github.com/aniyomiorg/aniyomi/commit/a7644c268153fc0b9f10c27202591f960c6f6384), [`5045fa1`](https://github.com/aniyomiorg/aniyomi/commit/5045fa18ce5a1faa2130f1a33609e43d8453f078))

## [v0.16.4.1] - 2024-07-01
### Fixed

- Hotfix release to address errors with extensions ([@jmir1](https://github.com/jmir1)) ([`98d2528`](https://github.com/aniyomiorg/aniyomi/commit/98d252866e17beba7d9a4d094797e23c05ead6c1))

## [v0.16.4.0] - 2024-07-01
### Fixed

- Fix pip not broadcasting intent in A14+ ([@quickdesh](https://github.com/quickdesh)) ([#1603](https://github.com/aniyomiorg/aniyomi/pull/1603))
- Fix advanced player settings crash in android ≤ 10 ([@perokhe](https://github.com/perokhe)) ([#1627](https://github.com/aniyomiorg/aniyomi/pull/1627))

### Improved

- Hide the skip intro button if the skipped amount == 0 ([@abdallahmehiz](https://github.com/abdallahmehiz)) ([#1598](https://github.com/aniyomiorg/aniyomi/pull/1598))

### Other

- Merge from mihon until mihon 0.16.2 ([@Secozzi](https://github.com/Secozzi)) ([#1578](https://github.com/aniyomiorg/aniyomi/pull/1578))
  - Merge from mihon until 0.16.4 ([@Secozzi](https://github.com/Secozzi)) ([#1601](https://github.com/aniyomiorg/aniyomi/pull/1601))


================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Contributor Covenant Code of Conduct

## Our Pledge

We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, caste, color, religion, or sexual identity
and orientation.

We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.

## Our Standards

Examples of behavior that contributes to a positive environment for our
community include:

* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
  and learning from the experience
* Focusing on what is best not just for us as individuals, but for the
  overall community

Examples of unacceptable behavior include:

* The use of sexualized language or imagery, and sexual attention or
  advances of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email
  address, without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
  professional setting

## Enforcement Responsibilities

Community moderators are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.

Community moderators have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.

## Scope

This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community moderators responsible for enforcement at
the [Tachiyomi Discord server](https://discord.gg/tachiyomi).
All complaints will be reviewed and investigated promptly and fairly.

All community moderators are obligated to respect the privacy and security of the
reporter of any incident.

## Enforcement Guidelines

Community moderators will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:

### 1. Correction

**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.

**Consequence**: A private, written warning from community moderators, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.

### 2. Warning

**Community Impact**: A violation through a single incident or series
of actions.

**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or
permanent ban.

### 3. Temporary Ban

**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.

**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.

### 4. Permanent Ban

**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior,  harassment of an
individual, or aggression toward or disparagement of classes of individuals.

**Consequence**: A permanent ban from any sort of public interaction within
the community.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org/),
version 2.1, available at
[v2.1](https://www.contributor-covenant.org/version/2/1/code_of_conduct.html).

Community Impact Guidelines were inspired by
[Mozilla's code of conduct enforcement ladder](https://github.com/mozilla/diversity).

For answers to common questions about this code of conduct, see the FAQ at
[FAQ](https://www.contributor-covenant.org/faq). Translations are available
at [translations](https://www.contributor-covenant.org/translations).


================================================
FILE: CONTRIBUTING.md
================================================
Looking to report an issue/bug or make a feature request? Please refer to the [README file](https://github.com/aniyomiorg/aniyomi#issues-feature-requests-and-contributing).

---

Thanks for your interest in contributing to Aniyomi!


# Code contributions

Pull requests are welcome!

If you're interested in taking on [an open issue](https://github.com/aniyomiorg/aniyomi/issues), please comment on it so others are aware.
You do not need to ask for permission nor an assignment.

## Prerequisites

Before you start, please note that the ability to use following technologies is **required** and that existing contributors will not actively teach them to you.

- Basic [Android development](https://developer.android.com/)
- [Kotlin](https://kotlinlang.org/)

### Tools

- [Android Studio](https://developer.android.com/studio)
- Emulator or phone with developer options enabled to test changes.

## Getting help

- Join [the Discord server](https://discord.gg/F32UjdJZrR) for online help and to ask questions while developing.

# Translations

Translations are done externally via Weblate. See [our website](https://aniyomi.org/docs/contribute#translation) for more details.


# Forks

Forks are allowed so long as they abide by [the project's LICENSE](https://github.com/aniyomiorg/aniyomi/blob/main/LICENSE).

When creating a fork, remember to:

- To avoid confusion with the main app:
    - Change the app name
    - Change the app icon
    - Change or disable the [app update checker](https://github.com/aniyomiorg/aniyomi/blob/main/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateChecker.kt)
- To avoid installation conflicts:
    - Change the `applicationId` in [`build.gradle.kts`](https://github.com/aniyomiorg/aniyomi/blob/main/app/build.gradle.kts)
- To avoid having your data polluting the main app's analytics and crash report services:
    - If you want to use Firebase analytics, replace [`google-services.json`](https://github.com/aniyomiorg/aniyomi/blob/main/app/src/standard/google-services.json) with your own
    - If you want to use ACRA crash reporting, replace the `ACRA_URI` endpoint in [`build.gradle.kts`](https://github.com/aniyomiorg/aniyomi/blob/main/app/build.gradle.kts) with your own


================================================
FILE: LICENSE
================================================
                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS


================================================
FILE: README.md
================================================
<div align="center">

<a href="https://aniyomi.org">
    <img src="./.github/assets/logo.png" alt="Aniyomi logo" title="Aniyomi logo" width="80"/>
</a>

# Aniyomi [App](#)

### Full-featured player and reader, based on ~~Tachiyomi~~ Mihon.
Discover and watch anime, cartoons, series, and more – easier than ever on your Android device.

[![Discord server](https://img.shields.io/discord/841701076242530374.svg?label=&labelColor=6A7EC2&color=7389D8&logo=discord&logoColor=FFFFFF)](https://discord.gg/F32UjdJZrR)
[![GitHub downloads](https://img.shields.io/github/downloads/aniyomiorg/aniyomi/total?label=downloads&labelColor=27303D&color=0D1117&logo=github&logoColor=FFFFFF&style=flat)](https://github.com/aniyomiorg/aniyomi/releases)

[![CI](https://img.shields.io/github/actions/workflow/status/aniyomiorg/aniyomi/build_push.yml?labelColor=27303D)](https://github.com/aniyomiorg/aniyomi/actions/workflows/build_push.yml)
[![License: Apache-2.0](https://img.shields.io/github/license/aniyomiorg/aniyomi?labelColor=27303D&color=818cf8)](/LICENSE)
[![Translation status](https://img.shields.io/weblate/progress/aniyomi?labelColor=27303D&color=946300)](https://hosted.weblate.org/engage/aniyomi/)

## Download

[![Aniyomi Stable](https://img.shields.io/github/release/aniyomiorg/aniyomi.svg?maxAge=3600&label=Stable&labelColor=06599d&color=043b69)](https://github.com/aniyomiorg/aniyomi/releases)
[![Aniyomi Preview](https://img.shields.io/github/v/release/aniyomiorg/aniyomi-preview.svg?maxAge=3600&label=Beta&labelColor=2c2c47&color=1c1c39)](https://github.com/aniyomiorg/aniyomi-preview/releases)

*Requires Android 8.0 or higher.*

## Features

<div align="left">

* Local reading and watching of content.
* A configurable reader with multiple viewers, reading directions and other settings.
* A configurable player built on mpv-android with multiple options and settings.
* Tracker support: [MyAnimeList](https://myanimelist.net/), [AniList](https://anilist.co/), [Kitsu](https://kitsu.app/), [MangaUpdates](https://mangaupdates.com), [Shikimori](https://shikimori.one), [Simkl](https://simkl.com/), and [Bangumi](https://bgm.tv/) support.
* Categories to organize your library.
* Light and dark themes.
* Schedule updating your library for new chapters/episodes.
* Create backups locally to read/watch offline or to your desired cloud service.
* Plus much more...

</div>

## Contributing

[Code of conduct](./CODE_OF_CONDUCT.md) · [Contributing guide](./CONTRIBUTING.md)

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Before reporting a new issue, take a look at the [FAQ](https://aniyomi.org/docs/faq/general), the [changelog](https://aniyomi.org/changelogs/) and the already opened [issues](https://github.com/aniyomiorg/aniyomi/issues); if you got any questions, join our [Discord server](https://discord.gg/F32UjdJZrR).

### Repositories

[![aniyomiorg/aniyomi-website - GitHub](https://github-readme-stats.vercel.app/api/pin/?username=aniyomiorg&repo=aniyomi-website&bg_color=161B22&text_color=c9d1d9&title_color=818cf8&icon_color=818cf8&border_radius=8&hide_border=true&description_lines_count=2)](https://github.com/aniyomiorg/aniyomi-website/)
[![aniyomiorg/aniyomi-mpv-lib - GitHub](https://github-readme-stats.vercel.app/api/pin/?username=aniyomiorg&repo=aniyomi-mpv-lib&bg_color=161B22&text_color=c9d1d9&title_color=818cf8&icon_color=818cf8&border_radius=8&hide_border=true&description_lines_count=2)](https://github.com/aniyomiorg/aniyomi-mpv-lib/)

### Credits

Thank you to all the people who have contributed!

<a href="https://github.com/aniyomiorg/aniyomi/graphs/contributors">
    <img src="https://contrib.rocks/image?repo=aniyomiorg/aniyomi" alt="Aniyomi app contributors" title="Aniyomi app contributors" width="800"/>
</a>

### Disclaimer

The developer(s) of this application does not have any affiliation with the content providers available, and this application hosts zero content.

### License

<pre>
Copyright © 2015 Javier Tomás
Copyright © 2024 Mihon Open Source Project
Copyright © 2024 Aniyomi Open Source Project

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
</pre>

</div>


================================================
FILE: app/.idea/.gitignore
================================================
# Default ignored files
/shelf/
/workspace.xml


================================================
FILE: app/.idea/.name
================================================
MangaDownloader.kt

================================================
FILE: app/.idea/discord.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="DiscordProjectSettings">
    <option name="show" value="PROJECT_FILES" />
    <option name="description" value="" />
  </component>
</project>


================================================
FILE: app/.idea/gradle.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="GradleMigrationSettings" migrationVersion="1" />
  <component name="GradleSettings">
    <option name="linkedExternalProjectsSettings">
      <GradleProjectSettings>
        <option name="externalProjectPath" value="$PROJECT_DIR$" />
        <option name="gradleJvm" value="jbr-17" />
        <option name="modules">
          <set>
            <option value="$PROJECT_DIR$" />
          </set>
        </option>
        <option name="resolveExternalAnnotations" value="false" />
      </GradleProjectSettings>
    </option>
  </component>
</project>


================================================
FILE: app/.idea/misc.xml
================================================
<project version="4">
  <component name="ExternalStorageConfigurationManager" enabled="true" />
</project>


================================================
FILE: app/.idea/vcs.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="VcsDirectoryMappings">
    <mapping directory="$PROJECT_DIR$/.." vcs="Git" />
  </component>
</project>


================================================
FILE: app/build.gradle.kts
================================================
import mihon.buildlogic.Config
import mihon.buildlogic.getBuildTime
import mihon.buildlogic.getCommitCount
import mihon.buildlogic.getGitSha

plugins {
    id("mihon.android.application")
    id("mihon.android.application.compose")
    id("com.github.zellius.shortcut-helper")
    kotlin("plugin.serialization")
    alias(libs.plugins.aboutLibraries)
}

shortcutHelper.setFilePath("./shortcuts.xml")

android {
    namespace = "eu.kanade.tachiyomi"

    defaultConfig {
        applicationId = "xyz.jmir.tachiyomi.mi"

        versionCode = 131
        versionName = "0.18.1.2"

        buildConfigField("String", "COMMIT_COUNT", "\"${getCommitCount()}\"")
        buildConfigField("String", "COMMIT_SHA", "\"${getGitSha()}\"")
        buildConfigField("String", "BUILD_TIME", "\"${getBuildTime(useLastCommitTime = false)}\"")
        buildConfigField("boolean", "UPDATER_ENABLED", "${Config.enableUpdater}")

        // Put these fields in acra.properties
        // val acraProperties = Properties()
        // rootProject.file("acra.properties")
        //     .takeIf { it.exists() }
        //     ?.let { acraProperties.load(FileInputStream(it)) }
        // val acraUri = acraProperties.getProperty("ACRA_URI", "")
        // val acraLogin = acraProperties.getProperty("ACRA_LOGIN", "")
        // val acraPassword = acraProperties.getProperty("ACRA_PASSWORD", "")
        // buildConfigField("String", "ACRA_URI", "\"$acraUri\"")
        // buildConfigField("String", "ACRA_LOGIN", "\"$acraLogin\"")
        // buildConfigField("String", "ACRA_PASSWORD", "\"$acraPassword\"")

        testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        val debug by getting {
            applicationIdSuffix = ".dev"
            versionNameSuffix = "-${getCommitCount()}"
            isPseudoLocalesEnabled = true
        }
        val release by getting {
            isMinifyEnabled = Config.enableCodeShrink
            isShrinkResources = Config.enableCodeShrink

            proguardFiles("proguard-android-optimize.txt", "proguard-rules.pro")

            buildConfigField("String", "BUILD_TIME", "\"${getBuildTime(useLastCommitTime = true)}\"")
        }

        val commonMatchingFallbacks = listOf(release.name)

        create("preview") {
            initWith(release)

            applicationIdSuffix = ".debug"

            versionNameSuffix = debug.versionNameSuffix
            signingConfig = debug.signingConfig

            matchingFallbacks.addAll(commonMatchingFallbacks)

            buildConfigField("String", "BUILD_TIME", "\"${getBuildTime(useLastCommitTime = false)}\"")
        }
        create("benchmark") {
            initWith(release)

            isDebuggable = false
            isProfileable = true
            versionNameSuffix = "-benchmark"
            applicationIdSuffix = ".benchmark"

            signingConfig = debug.signingConfig

            matchingFallbacks.addAll(commonMatchingFallbacks)
        }
    }

    sourceSets {
        getByName("preview").res.srcDirs("src/debug/res")
        getByName("benchmark").res.srcDirs("src/debug/res")
    }

    splits {
        abi {
            isEnable = true
            isUniversalApk = true
            reset()
            include("armeabi-v7a", "arm64-v8a", "x86", "x86_64")
        }
    }

    packaging {
        jniLibs {
            keepDebugSymbols += listOf(
                "libandroidx.graphics.path",
                "libarchive-jni",
                "libavcodec",
                "libavdevice",
                "libavfilter",
                "libavformat",
                "libavutil",
                "libconscrypt_jni",
                "libc++_shared",
                "libffmpegkit_abidetect",
                "libffmpegkit",
                "libimagedecoder",
                "libmpv",
                "libplayer",
                "libpostproc",
                "libquickjs",
                "libsqlite3x",
                "libswresample",
                "libswscale",
                "libxml2",
            )
                .map { "**/$it.so" }
        }
        resources {
            excludes += setOf(
                "kotlin-tooling-metadata.json",
                "LICENSE.txt",
                "META-INF/**/*.properties",
                "META-INF/**/LICENSE.txt",
                "META-INF/*.properties",
                "META-INF/*.version",
                "META-INF/DEPENDENCIES",
                "META-INF/LICENSE",
                "META-INF/NOTICE",
                "META-INF/README.md",
            )
        }
    }

    dependenciesInfo {
        includeInApk = Config.includeDependencyInfo
        includeInBundle = Config.includeDependencyInfo
    }

    buildFeatures {
        viewBinding = true
        buildConfig = true

        // Disable some unused things
        aidl = false
        renderScript = false
        shaders = false
    }

    lint {
        abortOnError = false
        checkReleaseBuilds = false
    }
}

kotlin {
    compilerOptions {
        freeCompilerArgs.addAll(
            "-opt-in=androidx.compose.animation.ExperimentalAnimationApi",
            "-opt-in=androidx.compose.animation.graphics.ExperimentalAnimationGraphicsApi",
            "-opt-in=androidx.compose.foundation.ExperimentalFoundationApi",
            "-opt-in=androidx.compose.foundation.layout.ExperimentalLayoutApi",
            "-opt-in=androidx.compose.material3.ExperimentalMaterial3Api",
            "-opt-in=androidx.compose.ui.ExperimentalComposeUiApi",
            "-opt-in=coil3.annotation.ExperimentalCoilApi",
            "-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi",
            "-opt-in=kotlinx.coroutines.FlowPreview",
            "-opt-in=kotlinx.coroutines.InternalCoroutinesApi",
            "-opt-in=kotlinx.serialization.ExperimentalSerializationApi",
        )
    }
}

dependencies {
    implementation(projects.i18n)
    implementation(projects.i18nAniyomi)
    implementation(projects.core.archive)
    implementation(projects.core.common)
    implementation(projects.coreMetadata)
    implementation(projects.sourceApi)
    implementation(projects.sourceLocal)
    implementation(projects.data)
    implementation(projects.domain)
    implementation(projects.presentationCore)
    implementation(projects.presentationWidget)

    // Compose
    implementation(compose.activity)
    implementation(compose.foundation)
    implementation(compose.material3.core)
    implementation(compose.material.icons)
    implementation(compose.animation)
    implementation(compose.animation.graphics)
    debugImplementation(compose.ui.tooling)
    implementation(compose.ui.tooling.preview)
    implementation(compose.ui.util)

    implementation(androidx.interpolator)

    implementation(androidx.paging.runtime)
    implementation(androidx.paging.compose)

    implementation(libs.bundles.sqlite)

    implementation(kotlinx.reflect)
    implementation(kotlinx.immutables)

    implementation(platform(kotlinx.coroutines.bom))
    implementation(kotlinx.bundles.coroutines)

    // AndroidX libraries
    implementation(androidx.annotation)
    implementation(androidx.appcompat)
    implementation(androidx.biometricktx)
    implementation(androidx.constraintlayout)
    implementation(aniyomilibs.compose.constraintlayout)
    implementation(androidx.corektx)
    implementation(androidx.splashscreen)
    implementation(androidx.recyclerview)
    implementation(androidx.viewpager)
    implementation(androidx.profileinstaller)
    implementation(aniyomilibs.mediasession)

    implementation(androidx.bundles.lifecycle)

    // Job scheduling
    implementation(androidx.workmanager)

    // RxJava
    implementation(libs.rxjava)

    // Networking
    implementation(libs.bundles.okhttp)
    implementation(libs.okio)
    implementation(libs.conscrypt.android) // TLS 1.3 support for Android < 10

    // Data serialization (JSON, protobuf, xml)
    implementation(kotlinx.bundles.serialization)

    // HTML parser
    implementation(libs.jsoup)

    // Disk
    implementation(libs.disklrucache)
    implementation(libs.unifile)

    // Preferences
    implementation(libs.preferencektx)

    // Dependency injection
    implementation(libs.injekt)

    // Image loading
    implementation(platform(libs.coil.bom))
    implementation(libs.bundles.coil)
    implementation(libs.subsamplingscaleimageview) {
        exclude(module = "image-decoder")
    }
    implementation(libs.image.decoder)

    // UI libraries
    implementation(libs.material)
    implementation(libs.flexible.adapter.core)
    implementation(libs.photoview)
    implementation(libs.directionalviewpager) {
        exclude(group = "androidx.viewpager", module = "viewpager")
    }
    implementation(libs.insetter)
    implementation(libs.bundles.richtext)
    implementation(libs.aboutLibraries.compose)
    implementation(libs.bundles.voyager)
    implementation(libs.compose.materialmotion)
    implementation(libs.swipe)
    implementation(libs.compose.webview)
    implementation(libs.compose.grid)
    implementation(libs.reorderable)

    // Logging
    implementation(libs.logcat)

    // Shizuku
    implementation(libs.bundles.shizuku)

    // Tests
    testImplementation(libs.bundles.test)

    // For detecting memory leaks; see https://square.github.io/leakcanary/
    // debugImplementation(libs.leakcanary.android)

    implementation(libs.leakcanary.plumber)

    testImplementation(kotlinx.coroutines.test)

    // mpv-android
    implementation(aniyomilibs.aniyomi.mpv)
    // FFmpeg-kit
    implementation(aniyomilibs.ffmpeg.kit)
    implementation(aniyomilibs.arthenica.smartexceptions)
    // seeker seek bar
    implementation(aniyomilibs.seeker)
    // true type parser
    implementation(aniyomilibs.truetypeparser)
}

androidComponents {
    beforeVariants { variantBuilder ->
        // Disables standardBenchmark
        if (variantBuilder.buildType == "benchmark") {
            variantBuilder.enable = variantBuilder.productFlavors.containsAll(
                listOf("default" to "dev"),
            )
        }
    }
    onVariants(selector().withFlavor("default" to "standard")) {
        // Only excluding in standard flavor because this breaks
        // Layout Inspector's Compose tree
        it.packaging.resources.excludes.add("META-INF/*.version")
    }
}

buildscript {
    dependencies {
        classpath(kotlinx.gradle)
    }
}


================================================
FILE: app/proguard-android-optimize.txt
================================================
-dontusemixedcaseclassnames
-ignorewarnings
-verbose

-keepattributes *Annotation*

-keepclasseswithmembernames,includedescriptorclasses class * {
    native <methods>;
}

-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

-keepclassmembers class * implements android.os.Parcelable {
    public static final ** CREATOR;
}

-keep class androidx.annotation.Keep

-keep @androidx.annotation.Keep class * {*;}

-keepclasseswithmembers class * {
    @androidx.annotation.Keep <methods>;
}

-keepclasseswithmembers class * {
    @androidx.annotation.Keep <fields>;
}

-keepclasseswithmembers class * {
    @androidx.annotation.Keep <init>(...);
}

================================================
FILE: app/proguard-rules.pro
================================================
-dontobfuscate

-keep,allowoptimization class eu.kanade.**
-keep,allowoptimization class tachiyomi.**
-keep,allowoptimization class mihon.**

# Keep common dependencies used in extensions
-keep,allowoptimization class androidx.preference.** { public protected *; }
-keep,allowoptimization class android.content.** { *; }
-keep,allowoptimization class uy.kohesive.injekt.** { public protected *; }
-keep,allowoptimization class android.test.base.** { *; }
-keep,allowoptimization class kotlin.** { public protected *; }
-keep,allowoptimization class kotlinx.coroutines.** { public protected *; }
-keep,allowoptimization class kotlinx.serialization.** { public protected *; }
-keep,allowoptimization class okhttp3.** { public protected *; }
-keep,allowoptimization class okio.** { public protected *; }
-keep,allowoptimization class org.jsoup.** { public protected *; }
-keep,allowoptimization class rx.** { public protected *; }
-keep,allowoptimization class app.cash.quickjs.** { public protected *; }
-keep,allowoptimization class uy.kohesive.injekt.** { public protected *; }
-keep,allowoptimization class is.xyz.mpv.** { public protected *; }
-keep,allowoptimization class com.arthenica.** { public protected *; }

# From extensions-lib
-keep,allowoptimization class eu.kanade.tachiyomi.network.interceptor.RateLimitInterceptorKt { public protected *; }
-keep,allowoptimization class eu.kanade.tachiyomi.network.interceptor.SpecificHostRateLimitInterceptorKt { public protected *; }
-keep,allowoptimization class eu.kanade.tachiyomi.network.NetworkHelper { public protected *; }
-keep,allowoptimization class eu.kanade.tachiyomi.network.OkHttpExtensionsKt { public protected *; }
-keep,allowoptimization class eu.kanade.tachiyomi.network.RequestsKt { public protected *; }
-keep,allowoptimization class eu.kanade.tachiyomi.AppInfo { public protected *; }

##---------------Begin: proguard configuration for RxJava 1.x  ----------
-dontwarn sun.misc.**

-keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* {
   long producerIndex;
   long consumerIndex;
}

-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef {
    rx.internal.util.atomic.LinkedQueueNode producerNode;
}

-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef {
    rx.internal.util.atomic.LinkedQueueNode consumerNode;
}

-dontnote rx.internal.util.PlatformDependent
##---------------End: proguard configuration for RxJava 1.x  ----------

##---------------Begin: proguard configuration for okhttp  ----------
-keepclasseswithmembers class okhttp3.MultipartBody$Builder { *; }
##---------------End: proguard configuration for okhttp  ----------

##---------------Begin: proguard configuration for kotlinx.serialization  ----------
-keepattributes *Annotation*, InnerClasses
-dontnote kotlinx.serialization.** # core serialization annotations

# kotlinx-serialization-json specific. Add this if you have java.lang.NoClassDefFoundError kotlinx.serialization.json.JsonObjectSerializer
-keepclassmembers class kotlinx.serialization.json.** {
    *** Companion;
}
-keepclasseswithmembers class kotlinx.serialization.json.** {
    kotlinx.serialization.KSerializer serializer(...);
}

-keep,includedescriptorclasses class eu.kanade.**$$serializer { *; }
-keepclassmembers class eu.kanade.** {
    *** Companion;
}
-keepclasseswithmembers class eu.kanade.** {
    kotlinx.serialization.KSerializer serializer(...);
}

-keep class kotlinx.serialization.**
-keepclassmembers class kotlinx.serialization.** {
    <methods>;
}
##---------------End: proguard configuration for kotlinx.serialization  ----------

# XmlUtil
-keep public enum nl.adaptivity.xmlutil.EventType { *; }

================================================
FILE: app/shortcuts.xml
================================================
<shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
    <shortcut
        android:enabled="true"
        android:icon="@drawable/sc_collections_bookmark_48dp"
        android:shortcutDisabledMessage="@string/app_not_available"
        android:shortcutId="show_library"
        android:shortcutLongLabel="@string/label_manga_library"
        android:shortcutShortLabel="@string/label_manga_library">
        <intent
            android:action="eu.kanade.tachiyomi.SHOW_LIBRARY"
            android:targetClass="eu.kanade.tachiyomi.ui.main.MainActivity" />
    </shortcut>
    <shortcut
        android:enabled="true"
        android:icon="@drawable/sc_collections_baseline_48dp"
        android:shortcutDisabledMessage="@string/app_not_available"
        android:shortcutId="show_animelib"
        android:shortcutLongLabel="@string/label_anime_library"
        android:shortcutShortLabel="@string/label_anime_library">
        <intent
            android:action="eu.kanade.tachiyomi.SHOW_ANIMELIB"
            android:targetClass="eu.kanade.tachiyomi.ui.main.MainActivity" />
    </shortcut>
    <shortcut
        android:enabled="true"
        android:icon="@drawable/sc_new_releases_48dp"
        android:shortcutDisabledMessage="@string/app_not_available"
        android:shortcutId="show_recently_updated"
        android:shortcutLongLabel="@string/label_recent_updates"
        android:shortcutShortLabel="@string/label_recent_updates">
        <intent
            android:action="eu.kanade.tachiyomi.SHOW_RECENTLY_UPDATED"
            android:targetClass="eu.kanade.tachiyomi.ui.main.MainActivity" />
    </shortcut>
    <shortcut
        android:enabled="true"
        android:icon="@drawable/sc_history_48dp"
        android:shortcutDisabledMessage="@string/app_not_available"
        android:shortcutId="show_recently_updated"
        android:shortcutLongLabel="@string/label_recent_manga"
        android:shortcutShortLabel="@string/label_recent_manga">
        <intent
            android:action="eu.kanade.tachiyomi.SHOW_RECENTLY_READ"
            android:targetClass="eu.kanade.tachiyomi.ui.main.MainActivity" />
    </shortcut>
    <shortcut
        android:enabled="true"
        android:icon="@drawable/sc_explore_48dp"
        android:shortcutDisabledMessage="@string/app_not_available"
        android:shortcutId="show_catalogues"
        android:shortcutLongLabel="@string/browse"
        android:shortcutShortLabel="@string/browse">
        <intent
            android:action="eu.kanade.tachiyomi.SHOW_CATALOGUES"
            android:targetClass="eu.kanade.tachiyomi.ui.main.MainActivity" />
    </shortcut>
</shortcuts>


================================================
FILE: app/src/debug/res/drawable/ic_launcher_foreground.xml
================================================
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="108dp"
    android:height="108dp"
    android:viewportWidth="108.0"
    android:viewportHeight="108.0">
    <path
        android:pathData="M14.5,7L86.5,7A7,7 0,0 1,93.5 14L93.5,95A7,7 0,0 1,86.5 102L14.5,102A7,7 0,0 1,7.5 95L7.5,14A7,7 0,0 1,14.5 7z"
        android:fillColor="#000"/>
    <path
        android:pathData="M14.5,7L86.5,7A7,7 0,0 1,93.5 14L93.5,95A7,7 0,0 1,86.5 102L14.5,102A7,7 0,0 1,7.5 95L7.5,14A7,7 0,0 1,14.5 7z"
        android:fillColor="#455A64"/>
    <path
        android:pathData="M7.5,12.01C7.5,9.24 9.74,7 12.5,7L17.5,7L17.5,102L12.5,102C9.74,102 7.5,99.77 7.5,96.99L7.5,12.01Z"
        android:fillColor="#607D8B"/>
    <path
        android:pathData="M54,54m-25,0a25,25 0,1 1,50 0a25,25 0,1 1,-50 0"
        android:strokeWidth="0.0853242"
        android:fillColor="#C92824"/>
    <path
        android:pathData="M54,54m-20.051,0a20.051,20.051 0,1 1,40.102 0a20.051,20.051 0,1 1,-40.102 0"
        android:strokeWidth="0.0853242"
        android:fillColor="#FFFFFF"/>
    <path
        android:fillColor="#FF000000"
        android:pathData="m63.998,52.877 l-15.133,-8.736c-0.904,-0.521 -2.032,0.131 -2.032,1.173v17.474c0,1.044 1.13,1.695 2.032,1.173L63.997,55.224c0.904,-0.521 0.904,-1.825 0.001,-2.347z"
        android:strokeWidth="0.0853242"/>

</vector>


================================================
FILE: app/src/debug/res/mipmap/ic_launcher.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
  <background android:drawable="@android:color/transparent"/>
  <foreground android:drawable="@drawable/ic_launcher_foreground"/>
  <monochrome android:drawable="@drawable/ic_ani_monochrome_launcher" />
</adaptive-icon>


================================================
FILE: app/src/debug/res/mipmap/ic_launcher_round.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
  <background android:drawable="@android:color/transparent"/>
  <foreground android:drawable="@drawable/ic_launcher_foreground"/>
  <monochrome android:drawable="@drawable/ic_ani_monochrome_launcher" />
</adaptive-icon>


================================================
FILE: app/src/main/AndroidManifest.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" >

    <!-- Internet -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

    <!-- Storage -->
    <uses-permission
        android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
        tools:ignore="ScopedStorage" />

    <!-- For background jobs -->
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />

    <!-- For managing extensions -->
    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
    <uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES" />
    <uses-permission android:name="android.permission.UPDATE_PACKAGES_WITHOUT_USER_ACTION" />
    <!-- To view extension packages in API 30+ -->
    <uses-permission
        android:name="android.permission.QUERY_ALL_PACKAGES"
        tools:ignore="QueryAllPackagesPermission" />

    <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
    <uses-permission
        android:name="android.permission.READ_APP_SPECIFIC_LOCALES"
        tools:ignore="ProtectedPermissions" />

    <uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />

    <application
        android:name=".App"
        android:allowBackup="false"
        android:enableOnBackInvokedCallback="true"
        android:hardwareAccelerated="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:largeHeap="true"
        android:localeConfig="@xml/locales_config"
        android:networkSecurityConfig="@xml/network_security_config"
        android:preserveLegacyExternalStorage="true"
        android:requestLegacyExternalStorage="true"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.Tachiyomi">

        <activity
            android:name=".ui.main.MainActivity"
            android:exported="true"
            android:launchMode="singleTop"
            android:windowSoftInputMode="adjustResize"
            android:theme="@style/Theme.Tachiyomi.SplashScreen">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

            <!-- Deep link to add manga repos -->
            <intent-filter android:label="@string/action_add_repo">
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />

                <data android:scheme="tachiyomi" />
                <data android:host="add-repo" />
            </intent-filter>

            <!-- Deep link to add manga repos -->
            <intent-filter android:label="@string/action_add_repo">
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />

                <data android:scheme="aniyomi" />
                <data android:host="add-repo" />
            </intent-filter>

            <!-- Open backup files -->
            <intent-filter android:label="@string/pref_restore_backup">
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />

                <data android:scheme="file" />
                <data android:scheme="content" />
                <data android:host="*" />
                <data android:mimeType="*/*" />
                <!--
                Work around Android's ugly primitive PatternMatcher
                implementation that can't cope with finding a . early in
                the path unless it's explicitly matched.

                See https://stackoverflow.com/a/31028507
                -->
                <data android:pathPattern=".*\\.tachibk" />
                <data android:pathPattern=".*\\..*\\.tachibk" />
                <data android:pathPattern=".*\\..*\\..*\\.tachibk" />
                <data android:pathPattern=".*\\..*\\..*\\..*\\.tachibk" />
                <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.tachibk" />
                <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.tachibk" />
                <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\.tachibk" />
            </intent-filter>

            <!--suppress AndroidDomInspection -->
            <meta-data
                android:name="android.app.shortcuts"
                android:resource="@xml/shortcuts" />
        </activity>

        <activity
            android:name=".crash.CrashActivity"
            android:exported="false"
            android:process=":error_handler" />


        <activity
            android:name=".ui.deeplink.anime.DeepLinkAnimeActivity"
            android:exported="true"
            android:label="@string/action_global_anime_search"
            android:launchMode="singleTask"
            android:theme="@android:style/Theme.NoDisplay">
            <intent-filter>
                <action android:name="android.intent.action.SEARCH" />
                <action android:name="com.google.android.gms.actions.SEARCH_ACTION" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            <intent-filter>
                <action android:name="eu.kanade.tachiyomi.ANIMESEARCH" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.SEND" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="text/plain" />
            </intent-filter>

            <meta-data
                android:name="android.app.searchable"
                android:resource="@xml/searchable" />
        </activity>

        <activity
            android:name=".ui.deeplink.manga.DeepLinkMangaActivity"
            android:exported="true"
            android:label="@string/action_global_manga_search"
            android:launchMode="singleTask"
            android:theme="@android:style/Theme.NoDisplay">
            <intent-filter>
                <action android:name="android.intent.action.SEARCH" />
                <action android:name="com.google.android.gms.actions.SEARCH_ACTION" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            <intent-filter>
                <action android:name="eu.kanade.tachiyomi.SEARCH" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            <intent-filter>
                <action android:name="eu.kanade.tachiyomi.ANIMESEARCH" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.SEND" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="text/plain" />
            </intent-filter>

            <meta-data
                android:name="android.app.searchable"
                android:resource="@xml/searchable" />
        </activity>

        <activity
            android:name=".ui.reader.ReaderActivity"
            android:exported="false"
            android:launchMode="singleTask">
            <intent-filter>
                <action android:name="com.samsung.android.support.REMOTE_ACTION" />
            </intent-filter>

            <meta-data
                android:name="com.samsung.android.support.REMOTE_ACTION"
                android:resource="@xml/s_pen_actions" />
        </activity>
        <activity
            android:name=".ui.player.PlayerActivity"
            android:autoRemoveFromRecents="true"
            android:configChanges="orientation|screenLayout|screenSize|smallestScreenSize|keyboardHidden|keyboard|uiMode"
            android:exported="false"
            android:launchMode="singleTask"
            android:resizeableActivity="true"
            android:supportsPictureInPicture="true"
            android:theme="@style/Theme.Tachiyomi">
            <intent-filter>
                <action android:name="com.samsung.android.support.REMOTE_ACTION" />
            </intent-filter>

            <meta-data android:name="com.samsung.android.support.REMOTE_ACTION"
                android:resource="@xml/s_pen_actions"/>
        </activity>
        <activity
            android:name=".ui.security.UnlockActivity"
            android:exported="false"
            android:theme="@style/Theme.Tachiyomi" />

        <activity
            android:name=".ui.webview.WebViewActivity"
            android:configChanges="uiMode|orientation|screenSize"
            android:exported="false" />

        <activity
            android:name=".extension.manga.util.MangaExtensionInstallActivity"
            android:exported="false"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />

        <activity
            android:name=".extension.anime.util.AnimeExtensionInstallActivity"
            android:exported="false"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />

        <activity
            android:name=".ui.setting.track.TrackLoginActivity"
            android:exported="true"
            android:label="@string/track_activity_name">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />

                <data android:scheme="aniyomi"/>

                <data android:host="myanimelist-auth" />
                <data android:host="anilist-auth" />
                <data android:host="bangumi-auth" />
                <data android:host="shikimori-auth" />
                <data android:host="simkl-auth"/>
            </intent-filter>
        </activity>

        <receiver
            android:name=".data.notification.NotificationReceiver"
            android:exported="false" />

        <service
            android:name=".extension.manga.util.MangaExtensionInstallService"
            android:exported="false"
            android:foregroundServiceType="shortService" />

        <service
            android:name=".extension.anime.util.AnimeExtensionInstallService"
            android:exported="false"
            android:foregroundServiceType="shortService" />
        <service
            android:name="androidx.appcompat.app.AppLocalesMetadataHolderService"
            android:enabled="false"
            android:exported="false">
            <meta-data
                android:name="autoStoreLocales"
                android:value="true" />
        </service>

        <service
            android:name="androidx.work.impl.foreground.SystemForegroundService"
            android:foregroundServiceType="dataSync"
            tools:node="merge" />

        <provider
            android:name="androidx.core.content.FileProvider"
            android:authorities="${applicationId}.provider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/provider_paths" />
        </provider>

        <provider
            android:name="rikka.shizuku.ShizukuProvider"
            android:authorities="${applicationId}.shizuku"
            android:enabled="true"
            android:exported="true"
            android:multiprocess="false"
            android:permission="android.permission.INTERACT_ACROSS_USERS_FULL" />

        <meta-data
            android:name="android.webkit.WebView.EnableSafeBrowsing"
            android:value="false" />
        <meta-data
            android:name="android.webkit.WebView.MetricsOptOut"
            android:value="true" />

    </application>

</manifest>


================================================
FILE: app/src/main/assets/aniyomi.lua
================================================
aniyomi = {}
-- UI
function aniyomi.show_text(text)
    mp.set_property("user-data/aniyomi/show_text", text)
end
function aniyomi.hide_ui()
    mp.set_property("user-data/aniyomi/toggle_ui", "hide")
end
function aniyomi.show_ui()
    mp.set_property("user-data/aniyomi/toggle_ui", "show")
end
function aniyomi.toggle_ui()
    mp.set_property("user-data/aniyomi/toggle_ui", "toggle")
end
function aniyomi.show_subtitle_settings()
    mp.set_property("user-data/aniyomi/show_panel", "subtitle_settings")
end
function aniyomi.show_subtitle_delay()
    mp.set_property("user-data/aniyomi/show_panel", "subtitle_delay")
end
function aniyomi.show_audio_delay()
    mp.set_property("user-data/aniyomi/show_panel", "audio_delay")
end
function aniyomi.show_video_filters()
    mp.set_property("user-data/aniyomi/show_panel", "video_filters")
end
function aniyomi.show_software_keyboard()
    mp.set_property("user-data/aniyomi/software_keyboard", "show")
end
function aniyomi.hide_software_keyboard()
    mp.set_property("user-data/aniyomi/software_keyboard", "hide")
end
function aniyomi.toggle_software_keyboard()
    mp.set_property("user-data/aniyomi/software_keyboard", "toggle")
end
-- Custom buttons
function aniyomi.set_button_title(text)
    mp.set_property("user-data/aniyomi/set_button_title", text)
end
function aniyomi.reset_button_title()
    mp.set_property("user-data/aniyomi/reset_button_title", "unused")
end
function aniyomi.hide_button()
    mp.set_property("user-data/aniyomi/toggle_button", "hide")
end
function aniyomi.show_button()
    mp.set_property("user-data/aniyomi/toggle_button", "show")
end
function aniyomi.toggle_button()
    mp.set_property("user-data/aniyomi/toggle_button", "toggle")
end
-- Controls
function aniyomi.previous_episode()
    mp.set_property("user-data/aniyomi/switch_episode", "p")
end
function aniyomi.next_episode()
    mp.set_property("user-data/aniyomi/switch_episode", "n")
end
function aniyomi.pause()
    mp.set_property("user-data/aniyomi/pause", "pause")
end
function aniyomi.unpause()
    mp.set_property("user-data/aniyomi/pause", "unpause")
end
function aniyomi.pauseunpause()
    mp.set_property("user-data/aniyomi/pause", "pauseunpause")
end
function aniyomi.seek_by(value)
    mp.set_property("user-data/aniyomi/seek_by", value)
end
function aniyomi.seek_to(value)
    mp.set_property("user-data/aniyomi/seek_to", value)
end
function aniyomi.seek_by_with_text(value, text)
    mp.set_property("user-data/aniyomi/seek_by_with_text", value .. "|" .. text)
end
function aniyomi.seek_to_with_text(value, text)
    mp.set_property("user-data/aniyomi/seek_to_with_text", value .. "|" .. text)
end
function aniyomi.int_picker(title, name_format, start, stop, step, property)
    mp.set_property("user-data/aniyomi/launch_int_picker", title .. "|" .. name_format ..  "|" .. start .. "|" .. stop .. "|" .. step .. "|" .. property)
end
-- Legacy
function aniyomi.left_seek_by(value)
    aniyomi.seek_by(-value)
end
function aniyomi.right_seek_by(value)
    aniyomi.seek_by(value)
end
return aniyomi


================================================
FILE: app/src/main/baseline-prof.txt
================================================
Landroidx/activity/Cancellable;
Landroidx/activity/ComponentActivity;
PLandroidx/activity/ComponentActivity;->$r8$lambda$OnwlVMZzrLePIRy-6IUDTtLLUV0(Landroidx/activity/ComponentActivity;)Landroid/os/Bundle;
HSPLandroidx/activity/ComponentActivity;->$r8$lambda$h2i_RK2mddCIbAsGubaI4eL8_cU(Landroidx/activity/ComponentActivity;)V
PLandroidx/activity/ComponentActivity;->$r8$lambda$h2i_RK2mddCIbAsGubaI4eL8_cU(Landroidx/activity/ComponentActivity;)V
HSPLandroidx/activity/ComponentActivity;-><init>()V
HPLandroidx/activity/ComponentActivity;-><init>()V
HSPLandroidx/activity/ComponentActivity;->addOnContextAvailableListener(Landroidx/activity/contextaware/OnContextAvailableListener;)V
PLandroidx/activity/ComponentActivity;->addOnContextAvailableListener(Landroidx/activity/contextaware/OnContextAvailableListener;)V
HSPLandroidx/activity/ComponentActivity;->addOnNewIntentListener(Leu/kanade/tachiyomi/ui/main/MainActivity$HandleOnNewIntent$1$1$$ExternalSyntheticLambda0;)V
PLandroidx/activity/ComponentActivity;->addOnNewIntentListener(Leu/kanade/tachiyomi/ui/main/MainActivity$HandleOnNewIntent$1$1$$ExternalSyntheticLambda0;)V
HSPLandroidx/activity/ComponentActivity;->ensureViewModelStore()V
PLandroidx/activity/ComponentActivity;->ensureViewModelStore()V
HSPLandroidx/activity/ComponentActivity;->getActivityResultRegistry()Landroidx/activity/result/ActivityResultRegistry;
PLandroidx/activity/ComponentActivity;->getActivityResultRegistry()Landroidx/activity/result/ActivityResultRegistry;
HSPLandroidx/activity/ComponentActivity;->getDefaultViewModelCreationExtras()Landroidx/lifecycle/viewmodel/CreationExtras;
PLandroidx/activity/ComponentActivity;->getDefaultViewModelCreationExtras()Landroidx/lifecycle/viewmodel/CreationExtras;
HSPLandroidx/activity/ComponentActivity;->getLifecycle()Landroidx/lifecycle/Lifecycle;
HPLandroidx/activity/ComponentActivity;->getLifecycle()Landroidx/lifecycle/Lifecycle;
HSPLandroidx/activity/ComponentActivity;->getOnBackPressedDispatcher()Landroidx/activity/OnBackPressedDispatcher;
PLandroidx/activity/ComponentActivity;->getOnBackPressedDispatcher()Landroidx/activity/OnBackPressedDispatcher;
HSPLandroidx/activity/ComponentActivity;->getSavedStateRegistry()Landroidx/savedstate/SavedStateRegistry;
PLandroidx/activity/ComponentActivity;->getSavedStateRegistry()Landroidx/savedstate/SavedStateRegistry;
HSPLandroidx/activity/ComponentActivity;->getViewModelStore()Landroidx/lifecycle/ViewModelStore;
PLandroidx/activity/ComponentActivity;->getViewModelStore()Landroidx/lifecycle/ViewModelStore;
HSPLandroidx/activity/ComponentActivity;->onCreate(Landroid/os/Bundle;)V
PLandroidx/activity/ComponentActivity;->onCreate(Landroid/os/Bundle;)V
PLandroidx/activity/ComponentActivity;->onSaveInstanceState(Landroid/os/Bundle;)V
PLandroidx/activity/ComponentActivity;->onTrimMemory(I)V
PLandroidx/activity/ComponentActivity;->removeOnNewIntentListener(Landroidx/core/util/Consumer;)V
Landroidx/activity/ComponentActivity$$ExternalSyntheticLambda0;
HSPLandroidx/activity/ComponentActivity$$ExternalSyntheticLambda0;-><init>(Landroidx/fragment/app/FragmentActivity;)V
PLandroidx/activity/ComponentActivity$$ExternalSyntheticLambda0;-><init>(Landroidx/fragment/app/FragmentActivity;)V
Landroidx/activity/ComponentActivity$$ExternalSyntheticLambda1;
HSPLandroidx/activity/ComponentActivity$$ExternalSyntheticLambda1;-><init>(Landroidx/fragment/app/FragmentActivity;)V
PLandroidx/activity/ComponentActivity$$ExternalSyntheticLambda1;-><init>(Landroidx/fragment/app/FragmentActivity;)V
PLandroidx/activity/ComponentActivity$$ExternalSyntheticLambda1;->saveState()Landroid/os/Bundle;
Landroidx/activity/ComponentActivity$$ExternalSyntheticLambda2;
HSPLandroidx/activity/ComponentActivity$$ExternalSyntheticLambda2;-><init>(Landroidx/fragment/app/FragmentActivity;)V
PLandroidx/activity/ComponentActivity$$ExternalSyntheticLambda2;-><init>(Landroidx/fragment/app/FragmentActivity;)V
HSPLandroidx/activity/ComponentActivity$$ExternalSyntheticLambda2;->onContextAvailable(Landroid/content/Context;)V
PLandroidx/activity/ComponentActivity$$ExternalSyntheticLambda2;->onContextAvailable(Landroid/content/Context;)V
Landroidx/activity/ComponentActivity$1;
HSPLandroidx/activity/ComponentActivity$1;-><init>(Landroidx/fragment/app/FragmentActivity;)V
PLandroidx/activity/ComponentActivity$1;-><init>(Landroidx/fragment/app/FragmentActivity;)V
Landroidx/activity/ComponentActivity$2;
HSPLandroidx/activity/ComponentActivity$2;-><init>(Landroidx/fragment/app/FragmentActivity;)V
PLandroidx/activity/ComponentActivity$2;-><init>(Landroidx/fragment/app/FragmentActivity;)V
Landroidx/activity/ComponentActivity$3;
HSPLandroidx/activity/ComponentActivity$3;-><init>(Landroidx/fragment/app/FragmentActivity;)V
PLandroidx/activity/ComponentActivity$3;-><init>(Landroidx/fragment/app/FragmentActivity;)V
HSPLandroidx/activity/ComponentActivity$3;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V
HPLandroidx/activity/ComponentActivity$3;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V
Landroidx/activity/ComponentActivity$4;
HSPLandroidx/activity/ComponentActivity$4;-><init>(Landroidx/fragment/app/FragmentActivity;)V
PLandroidx/activity/ComponentActivity$4;-><init>(Landroidx/fragment/app/FragmentActivity;)V
HSPLandroidx/activity/ComponentActivity$4;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V
HPLandroidx/activity/ComponentActivity$4;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V
Landroidx/activity/ComponentActivity$5;
HSPLandroidx/activity/ComponentActivity$5;-><init>(Landroidx/fragment/app/FragmentActivity;)V
PLandroidx/activity/ComponentActivity$5;-><init>(Landroidx/fragment/app/FragmentActivity;)V
HSPLandroidx/activity/ComponentActivity$5;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V
PLandroidx/activity/ComponentActivity$5;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V
Landroidx/activity/ComponentActivity$NonConfigurationInstances;
Landroidx/activity/ComponentActivity$ReportFullyDrawnExecutorApi16Impl;
HSPLandroidx/activity/ComponentActivity$ReportFullyDrawnExecutorApi16Impl;-><init>(Landroidx/fragment/app/FragmentActivity;)V
PLandroidx/activity/ComponentActivity$ReportFullyDrawnExecutorApi16Impl;-><init>(Landroidx/fragment/app/FragmentActivity;)V
Landroidx/activity/ComponentDialog$$ExternalSyntheticLambda0;
HSPLandroidx/activity/ComponentDialog$$ExternalSyntheticLambda0;-><init>(Ljava/lang/Object;I)V
PLandroidx/activity/ComponentDialog$$ExternalSyntheticLambda0;-><init>(Ljava/lang/Object;I)V
Landroidx/activity/FullyDrawnReporter;
HSPLandroidx/activity/FullyDrawnReporter;-><init>(Ljava/util/concurrent/Executor;Landroidx/activity/ComponentActivity$$ExternalSyntheticLambda0;)V
PLandroidx/activity/FullyDrawnReporter;-><init>(Ljava/util/concurrent/Executor;Landroidx/activity/ComponentActivity$$ExternalSyntheticLambda0;)V
Landroidx/activity/OnBackPressedCallback;
HSPLandroidx/activity/OnBackPressedCallback;-><init>(Z)V
PLandroidx/activity/OnBackPressedCallback;-><init>(Z)V
HSPLandroidx/activity/OnBackPressedCallback;->addCancellable(Landroidx/activity/Cancellable;)V
HPLandroidx/activity/OnBackPressedCallback;->addCancellable(Landroidx/activity/Cancellable;)V
HSPLandroidx/activity/OnBackPressedCallback;->remove()V
HPLandroidx/activity/OnBackPressedCallback;->remove()V
HSPLandroidx/activity/OnBackPressedCallback;->removeCancellable(Landroidx/activity/Cancellable;)V
HPLandroidx/activity/OnBackPressedCallback;->removeCancellable(Landroidx/activity/Cancellable;)V
HSPLandroidx/activity/OnBackPressedCallback;->setEnabled(Z)V
PLandroidx/activity/OnBackPressedCallback;->setEnabled(Z)V
Landroidx/activity/OnBackPressedDispatcher;
HSPLandroidx/activity/OnBackPressedDispatcher;-><init>(Ljava/lang/Runnable;)V
PLandroidx/activity/OnBackPressedDispatcher;-><init>(Ljava/lang/Runnable;)V
HSPLandroidx/activity/OnBackPressedDispatcher;->access$getOnBackPressedCallbacks$p(Landroidx/activity/OnBackPressedDispatcher;)Lkotlin/collections/ArrayDeque;
PLandroidx/activity/OnBackPressedDispatcher;->access$getOnBackPressedCallbacks$p(Landroidx/activity/OnBackPressedDispatcher;)Lkotlin/collections/ArrayDeque;
HSPLandroidx/activity/OnBackPressedDispatcher;->addCallback(Landroidx/lifecycle/LifecycleOwner;Landroidx/activity/OnBackPressedCallback;)V
HPLandroidx/activity/OnBackPressedDispatcher;->addCallback(Landroidx/lifecycle/LifecycleOwner;Landroidx/activity/OnBackPressedCallback;)V
HSPLandroidx/activity/OnBackPressedDispatcher;->addCancellableCallback$activity_release(Landroidx/activity/OnBackPressedCallback;)Landroidx/activity/Cancellable;
HPLandroidx/activity/OnBackPressedDispatcher;->addCancellableCallback$activity_release(Landroidx/activity/OnBackPressedCallback;)Landroidx/activity/Cancellable;
Landroidx/activity/OnBackPressedDispatcher$LifecycleOnBackPressedCancellable;
HSPLandroidx/activity/OnBackPressedDispatcher$LifecycleOnBackPressedCancellable;-><init>(Landroidx/activity/OnBackPressedDispatcher;Landroidx/lifecycle/Lifecycle;Landroidx/activity/OnBackPressedCallback;)V
HPLandroidx/activity/OnBackPressedDispatcher$LifecycleOnBackPressedCancellable;-><init>(Landroidx/activity/OnBackPressedDispatcher;Landroidx/lifecycle/Lifecycle;Landroidx/activity/OnBackPressedCallback;)V
HSPLandroidx/activity/OnBackPressedDispatcher$LifecycleOnBackPressedCancellable;->cancel()V
PLandroidx/activity/OnBackPressedDispatcher$LifecycleOnBackPressedCancellable;->cancel()V
HSPLandroidx/activity/OnBackPressedDispatcher$LifecycleOnBackPressedCancellable;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V
HPLandroidx/activity/OnBackPressedDispatcher$LifecycleOnBackPressedCancellable;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V
Landroidx/activity/OnBackPressedDispatcher$OnBackPressedCancellable;
HSPLandroidx/activity/OnBackPressedDispatcher$OnBackPressedCancellable;-><init>(Landroidx/activity/OnBackPressedDispatcher;Landroidx/activity/OnBackPressedCallback;)V
HPLandroidx/activity/OnBackPressedDispatcher$OnBackPressedCancellable;-><init>(Landroidx/activity/OnBackPressedDispatcher;Landroidx/activity/OnBackPressedCallback;)V
HSPLandroidx/activity/OnBackPressedDispatcher$OnBackPressedCancellable;->cancel()V
PLandroidx/activity/OnBackPressedDispatcher$OnBackPressedCancellable;->cancel()V
Landroidx/activity/OnBackPressedDispatcherKt;
HSPLandroidx/activity/OnBackPressedDispatcherKt;->get(Landroid/view/View;)Landroidx/activity/OnBackPressedDispatcherOwner;
PLandroidx/activity/OnBackPressedDispatcherKt;->get(Landroid/view/View;)Landroidx/activity/OnBackPressedDispatcherOwner;
Landroidx/activity/OnBackPressedDispatcherOwner;
Landroidx/activity/ViewTreeOnBackPressedDispatcherOwner$findViewTreeOnBackPressedDispatcherOwner$1;
HSPLandroidx/activity/ViewTreeOnBackPressedDispatcherOwner$findViewTreeOnBackPressedDispatcherOwner$1;-><clinit>()V
PLandroidx/activity/ViewTreeOnBackPressedDispatcherOwner$findViewTreeOnBackPressedDispatcherOwner$1;-><clinit>()V
HSPLandroidx/activity/ViewTreeOnBackPressedDispatcherOwner$findViewTreeOnBackPressedDispatcherOwner$1;-><init>(I)V
PLandroidx/activity/ViewTreeOnBackPressedDispatcherOwner$findViewTreeOnBackPressedDispatcherOwner$1;-><init>(I)V
HSPLandroidx/activity/ViewTreeOnBackPressedDispatcherOwner$findViewTreeOnBackPressedDispatcherOwner$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
HPLandroidx/activity/ViewTreeOnBackPressedDispatcherOwner$findViewTreeOnBackPressedDispatcherOwner$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/activity/compose/BackHandlerKt;
HSPLandroidx/activity/compose/BackHandlerKt;->BackHandler(ZLkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;II)V
HPLandroidx/activity/compose/BackHandlerKt;->BackHandler(ZLkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;II)V
Landroidx/activity/compose/BackHandlerKt$BackHandler$1$1;
HSPLandroidx/activity/compose/BackHandlerKt$BackHandler$1$1;-><init>(Landroidx/activity/compose/BackHandlerKt$BackHandler$backCallback$1$1;Z)V
PLandroidx/activity/compose/BackHandlerKt$BackHandler$1$1;-><init>(Landroidx/activity/compose/BackHandlerKt$BackHandler$backCallback$1$1;Z)V
HSPLandroidx/activity/compose/BackHandlerKt$BackHandler$1$1;->invoke()Ljava/lang/Object;
HPLandroidx/activity/compose/BackHandlerKt$BackHandler$1$1;->invoke()Ljava/lang/Object;
Landroidx/activity/compose/BackHandlerKt$BackHandler$2;
HSPLandroidx/activity/compose/BackHandlerKt$BackHandler$2;-><init>(Landroidx/activity/OnBackPressedDispatcher;Landroidx/lifecycle/LifecycleOwner;Landroidx/activity/compose/BackHandlerKt$BackHandler$backCallback$1$1;)V
PLandroidx/activity/compose/BackHandlerKt$BackHandler$2;-><init>(Landroidx/activity/OnBackPressedDispatcher;Landroidx/lifecycle/LifecycleOwner;Landroidx/activity/compose/BackHandlerKt$BackHandler$backCallback$1$1;)V
HSPLandroidx/activity/compose/BackHandlerKt$BackHandler$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
HPLandroidx/activity/compose/BackHandlerKt$BackHandler$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/activity/compose/BackHandlerKt$BackHandler$2$invoke$$inlined$onDispose$1;
HSPLandroidx/activity/compose/BackHandlerKt$BackHandler$2$invoke$$inlined$onDispose$1;-><init>(Ljava/lang/Object;I)V
PLandroidx/activity/compose/BackHandlerKt$BackHandler$2$invoke$$inlined$onDispose$1;-><init>(Ljava/lang/Object;I)V
HSPLandroidx/activity/compose/BackHandlerKt$BackHandler$2$invoke$$inlined$onDispose$1;->dispose()V
PLandroidx/activity/compose/BackHandlerKt$BackHandler$2$invoke$$inlined$onDispose$1;->dispose()V
Landroidx/activity/compose/BackHandlerKt$BackHandler$backCallback$1$1;
HSPLandroidx/activity/compose/BackHandlerKt$BackHandler$backCallback$1$1;-><init>(ZLandroidx/compose/runtime/MutableState;)V
PLandroidx/activity/compose/BackHandlerKt$BackHandler$backCallback$1$1;-><init>(ZLandroidx/compose/runtime/MutableState;)V
Landroidx/activity/compose/ComponentActivityKt;
HSPLandroidx/activity/compose/ComponentActivityKt;-><clinit>()V
PLandroidx/activity/compose/ComponentActivityKt;-><clinit>()V
HSPLandroidx/activity/compose/ComponentActivityKt;->setContent(Landroidx/activity/ComponentActivity;Landroidx/compose/runtime/internal/ComposableLambdaImpl;)V
PLandroidx/activity/compose/ComponentActivityKt;->setContent(Landroidx/activity/ComponentActivity;Landroidx/compose/runtime/internal/ComposableLambdaImpl;)V
Landroidx/activity/compose/LocalActivityResultRegistryOwner$LocalComposition$1;
HSPLandroidx/activity/compose/LocalActivityResultRegistryOwner$LocalComposition$1;-><clinit>()V
PLandroidx/activity/compose/LocalActivityResultRegistryOwner$LocalComposition$1;-><clinit>()V
HSPLandroidx/activity/compose/LocalActivityResultRegistryOwner$LocalComposition$1;-><init>(I)V
PLandroidx/activity/compose/LocalActivityResultRegistryOwner$LocalComposition$1;-><init>(I)V
HSPLandroidx/activity/compose/LocalActivityResultRegistryOwner$LocalComposition$1;->invoke()Ljava/lang/Object;
PLandroidx/activity/compose/LocalActivityResultRegistryOwner$LocalComposition$1;->invoke()Ljava/lang/Object;
Landroidx/activity/compose/LocalOnBackPressedDispatcherOwner;
HSPLandroidx/activity/compose/LocalOnBackPressedDispatcherOwner;-><clinit>()V
PLandroidx/activity/compose/LocalOnBackPressedDispatcherOwner;-><clinit>()V
HSPLandroidx/activity/compose/LocalOnBackPressedDispatcherOwner;->getCurrent(Landroidx/compose/runtime/Composer;)Landroidx/activity/OnBackPressedDispatcherOwner;
HPLandroidx/activity/compose/LocalOnBackPressedDispatcherOwner;->getCurrent(Landroidx/compose/runtime/Composer;)Landroidx/activity/OnBackPressedDispatcherOwner;
Landroidx/activity/contextaware/ContextAwareHelper;
HSPLandroidx/activity/contextaware/ContextAwareHelper;-><init>()V
PLandroidx/activity/contextaware/ContextAwareHelper;-><init>()V
HSPLandroidx/activity/contextaware/ContextAwareHelper;->addOnContextAvailableListener(Landroidx/activity/contextaware/OnContextAvailableListener;)V
PLandroidx/activity/contextaware/ContextAwareHelper;->addOnContextAvailableListener(Landroidx/activity/contextaware/OnContextAvailableListener;)V
PLandroidx/activity/contextaware/ContextAwareHelper;->clearAvailableContext()V
HSPLandroidx/activity/contextaware/ContextAwareHelper;->dispatchOnContextAvailable(Landroid/content/Context;)V
HPLandroidx/activity/contextaware/ContextAwareHelper;->dispatchOnContextAvailable(Landroid/content/Context;)V
Landroidx/activity/contextaware/OnContextAvailableListener;
Landroidx/activity/result/ActivityResult;
Landroidx/activity/result/ActivityResultCallback;
Landroidx/activity/result/ActivityResultLauncher;
HSPLandroidx/activity/result/ActivityResultLauncher;-><init>()V
PLandroidx/activity/result/ActivityResultLauncher;-><init>()V
Landroidx/activity/result/ActivityResultRegistry;
HSPLandroidx/activity/result/ActivityResultRegistry;-><init>()V
PLandroidx/activity/result/ActivityResultRegistry;-><init>()V
HPLandroidx/activity/result/ActivityResultRegistry;->onSaveInstanceState(Landroid/os/Bundle;)V
HSPLandroidx/activity/result/ActivityResultRegistry;->register(Ljava/lang/String;Landroidx/activity/result/contract/ActivityResultContract;Landroidx/activity/result/ActivityResultCallback;)Landroidx/activity/result/ActivityResultLauncher;
PLandroidx/activity/result/ActivityResultRegistry;->register(Ljava/lang/String;Landroidx/activity/result/contract/ActivityResultContract;Landroidx/activity/result/ActivityResultCallback;)Landroidx/activity/result/ActivityResultLauncher;
HSPLandroidx/activity/result/ActivityResultRegistry;->registerKey(Ljava/lang/String;)V
HPLandroidx/activity/result/ActivityResultRegistry;->registerKey(Ljava/lang/String;)V
HPLandroidx/activity/result/ActivityResultRegistry;->unregister(Ljava/lang/String;)V
Landroidx/activity/result/ActivityResultRegistry$2;
HSPLandroidx/activity/result/ActivityResultRegistry$2;-><init>(Landroidx/activity/result/ActivityResultRegistry;Ljava/lang/String;Landroidx/activity/result/contract/ActivityResultContract;I)V
PLandroidx/activity/result/ActivityResultRegistry$2;-><init>(Landroidx/activity/result/ActivityResultRegistry;Ljava/lang/String;Landroidx/activity/result/contract/ActivityResultContract;I)V
PLandroidx/activity/result/ActivityResultRegistry$2;->unregister()V
Landroidx/activity/result/ActivityResultRegistry$CallbackAndContract;
HSPLandroidx/activity/result/ActivityResultRegistry$CallbackAndContract;-><init>(Landroidx/activity/result/contract/ActivityResultContract;Landroidx/activity/result/ActivityResultCallback;)V
PLandroidx/activity/result/ActivityResultRegistry$CallbackAndContract;-><init>(Landroidx/activity/result/contract/ActivityResultContract;Landroidx/activity/result/ActivityResultCallback;)V
Landroidx/activity/result/ActivityResultRegistryOwner;
Landroidx/activity/result/contract/ActivityResultContract;
HSPLandroidx/activity/result/contract/ActivityResultContract;-><init>()V
PLandroidx/activity/result/contract/ActivityResultContract;-><init>()V
Landroidx/activity/result/contract/ActivityResultContracts$RequestMultiplePermissions;
HSPLandroidx/activity/result/contract/ActivityResultContracts$RequestMultiplePermissions;-><init>()V
PLandroidx/activity/result/contract/ActivityResultContracts$RequestMultiplePermissions;-><init>()V
Landroidx/activity/result/contract/ActivityResultContracts$StartActivityForResult;
HSPLandroidx/activity/result/contract/ActivityResultContracts$StartActivityForResult;-><init>()V
PLandroidx/activity/result/contract/ActivityResultContracts$StartActivityForResult;-><init>()V
Landroidx/appcompat/R$styleable;
HSPLandroidx/appcompat/R$styleable;-><clinit>()V
PLandroidx/appcompat/R$styleable;-><clinit>()V
Landroidx/appcompat/app/ActionBar;
HSPLandroidx/appcompat/app/ActionBar;->readLocales(Landroid/content/Context;)Ljava/lang/String;
PLandroidx/appcompat/app/ActionBar;->readLocales(Landroid/content/Context;)Ljava/lang/String;
Landroidx/appcompat/app/AppCompatActivity;
HSPLandroidx/appcompat/app/AppCompatActivity;-><init>()V
PLandroidx/appcompat/app/AppCompatActivity;-><init>()V
HSPLandroidx/appcompat/app/AppCompatActivity;->attachBaseContext(Landroid/content/Context;)V
PLandroidx/appcompat/app/AppCompatActivity;->attachBaseContext(Landroid/content/Context;)V
HSPLandroidx/appcompat/app/AppCompatActivity;->findViewById(I)Landroid/view/View;
PLandroidx/appcompat/app/AppCompatActivity;->findViewById(I)Landroid/view/View;
HSPLandroidx/appcompat/app/AppCompatActivity;->getDelegate()Landroidx/appcompat/app/AppCompatDelegate;
PLandroidx/appcompat/app/AppCompatActivity;->getDelegate()Landroidx/appcompat/app/AppCompatDelegate;
HSPLandroidx/appcompat/app/AppCompatActivity;->getResources()Landroid/content/res/Resources;
HPLandroidx/appcompat/app/AppCompatActivity;->getResources()Landroid/content/res/Resources;
HSPLandroidx/appcompat/app/AppCompatActivity;->initViewTreeOwners()V
HPLandroidx/appcompat/app/AppCompatActivity;->initViewTreeOwners()V
HSPLandroidx/appcompat/app/AppCompatActivity;->onContentChanged()V
PLandroidx/appcompat/app/AppCompatActivity;->onContentChanged()V
PLandroidx/appcompat/app/AppCompatActivity;->onDestroy()V
HSPLandroidx/appcompat/app/AppCompatActivity;->onPostCreate(Landroid/os/Bundle;)V
PLandroidx/appcompat/app/AppCompatActivity;->onPostCreate(Landroid/os/Bundle;)V
HSPLandroidx/appcompat/app/AppCompatActivity;->onPostResume()V
PLandroidx/appcompat/app/AppCompatActivity;->onPostResume()V
HSPLandroidx/appcompat/app/AppCompatActivity;->onStart()V
PLandroidx/appcompat/app/AppCompatActivity;->onStart()V
PLandroidx/appcompat/app/AppCompatActivity;->onStop()V
HSPLandroidx/appcompat/app/AppCompatActivity;->onTitleChanged(Ljava/lang/CharSequence;I)V
PLandroidx/appcompat/app/AppCompatActivity;->onTitleChanged(Ljava/lang/CharSequence;I)V
HSPLandroidx/appcompat/app/AppCompatActivity;->setContentView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V
PLandroidx/appcompat/app/AppCompatActivity;->setContentView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V
HSPLandroidx/appcompat/app/AppCompatActivity;->setTheme(I)V
PLandroidx/appcompat/app/AppCompatActivity;->setTheme(I)V
Landroidx/appcompat/app/AppCompatActivity$1;
HSPLandroidx/appcompat/app/AppCompatActivity$1;-><init>(Leu/kanade/tachiyomi/ui/base/activity/BaseActivity;)V
PLandroidx/appcompat/app/AppCompatActivity$1;-><init>(Leu/kanade/tachiyomi/ui/base/activity/BaseActivity;)V
PLandroidx/appcompat/app/AppCompatActivity$1;->saveState()Landroid/os/Bundle;
Landroidx/appcompat/app/AppCompatActivity$2;
HSPLandroidx/appcompat/app/AppCompatActivity$2;-><init>(Leu/kanade/tachiyomi/ui/base/activity/BaseActivity;)V
PLandroidx/appcompat/app/AppCompatActivity$2;-><init>(Leu/kanade/tachiyomi/ui/base/activity/BaseActivity;)V
HSPLandroidx/appcompat/app/AppCompatActivity$2;->onContextAvailable(Landroid/content/Context;)V
PLandroidx/appcompat/app/AppCompatActivity$2;->onContextAvailable(Landroid/content/Context;)V
Landroidx/appcompat/app/AppCompatCallback;
Landroidx/appcompat/app/AppCompatDelegate;
HSPLandroidx/appcompat/app/AppCompatDelegate;-><clinit>()V
PLandroidx/appcompat/app/AppCompatDelegate;-><clinit>()V
HSPLandroidx/appcompat/app/AppCompatDelegate;-><init>()V
PLandroidx/appcompat/app/AppCompatDelegate;-><init>()V
HSPLandroidx/appcompat/app/AppCompatDelegate;->addActiveDelegate(Landroidx/appcompat/app/AppCompatDelegate;)V
PLandroidx/appcompat/app/AppCompatDelegate;->addActiveDelegate(Landroidx/appcompat/app/AppCompatDelegate;)V
HSPLandroidx/appcompat/app/AppCompatDelegate;->getDefaultNightMode()I
PLandroidx/appcompat/app/AppCompatDelegate;->getDefaultNightMode()I
HSPLandroidx/appcompat/app/AppCompatDelegate;->getRequestedAppLocales()Landroidx/core/os/LocaleListCompat;
PLandroidx/appcompat/app/AppCompatDelegate;->getRequestedAppLocales()Landroidx/core/os/LocaleListCompat;
HSPLandroidx/appcompat/app/AppCompatDelegate;->isAutoStorageOptedIn(Landroid/content/Context;)Z
PLandroidx/appcompat/app/AppCompatDelegate;->isAutoStorageOptedIn(Landroid/content/Context;)Z
PLandroidx/appcompat/app/AppCompatDelegate;->removeActivityDelegate(Landroidx/appcompat/app/AppCompatDelegate;)V
HSPLandroidx/appcompat/app/AppCompatDelegate;->removeDelegateFromActives(Landroidx/appcompat/app/AppCompatDelegate;)V
PLandroidx/appcompat/app/AppCompatDelegate;->removeDelegateFromActives(Landroidx/appcompat/app/AppCompatDelegate;)V
HSPLandroidx/appcompat/app/AppCompatDelegate;->setDefaultNightMode(I)V
PLandroidx/appcompat/app/AppCompatDelegate;->setDefaultNightMode(I)V
HSPLandroidx/appcompat/app/AppCompatDelegate;->syncRequestedAndStoredLocales(Landroid/content/Context;)V
PLandroidx/appcompat/app/AppCompatDelegate;->syncRequestedAndStoredLocales(Landroid/content/Context;)V
Landroidx/appcompat/app/AppCompatDelegateImpl;
HSPLandroidx/appcompat/app/AppCompatDelegateImpl;-><clinit>()V
PLandroidx/appcompat/app/AppCompatDelegateImpl;-><clinit>()V
HSPLandroidx/appcompat/app/AppCompatDelegateImpl;-><init>(Landroid/app/Activity;Landroidx/appcompat/app/AppCompatCallback;)V
PLandroidx/appcompat/app/AppCompatDelegateImpl;-><init>(Landroid/app/Activity;Landroidx/appcompat/app/AppCompatCallback;)V
HSPLandroidx/appcompat/app/AppCompatDelegateImpl;-><init>(Landroid/content/Context;Landroid/view/Window;Landroidx/appcompat/app/AppCompatCallback;Ljava/lang/Object;)V
PLandroidx/appcompat/app/AppCompatDelegateImpl;-><init>(Landroid/content/Context;Landroid/view/Window;Landroidx/appcompat/app/AppCompatCallback;Ljava/lang/Object;)V
HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->applyApplicationSpecificConfig(ZZ)Z
PLandroidx/appcompat/app/AppCompatDelegateImpl;->applyApplicationSpecificConfig(ZZ)Z
HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->attachBaseContext2(Landroid/content/Context;)Landroid/content/Context;
PLandroidx/appcompat/app/AppCompatDelegateImpl;->attachBaseContext2(Landroid/content/Context;)Landroid/content/Context;
HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->attachToWindow(Landroid/view/Window;)V
PLandroidx/appcompat/app/AppCompatDelegateImpl;->attachToWindow(Landroid/view/Window;)V
HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->calculateApplicationLocales(Landroid/content/Context;)Landroidx/core/os/LocaleListCompat;
PLandroidx/appcompat/app/AppCompatDelegateImpl;->calculateApplicationLocales(Landroid/content/Context;)Landroidx/core/os/LocaleListCompat;
HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->createOverrideAppConfiguration(Landroid/content/Context;ILandroidx/core/os/LocaleListCompat;Landroid/content/res/Configuration;Z)Landroid/content/res/Configuration;
PLandroidx/appcompat/app/AppCompatDelegateImpl;->createOverrideAppConfiguration(Landroid/content/Context;ILandroidx/core/os/LocaleListCompat;Landroid/content/res/Configuration;Z)Landroid/content/res/Configuration;
PLandroidx/appcompat/app/AppCompatDelegateImpl;->dismissPopups()V
HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->doInvalidatePanelMenu(I)V
PLandroidx/appcompat/app/AppCompatDelegateImpl;->doInvalidatePanelMenu(I)V
HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->ensureSubDecor()V
HPLandroidx/appcompat/app/AppCompatDelegateImpl;->ensureSubDecor()V
HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->ensureWindow()V
PLandroidx/appcompat/app/AppCompatDelegateImpl;->ensureWindow()V
HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->findViewById(I)Landroid/view/View;
PLandroidx/appcompat/app/AppCompatDelegateImpl;->findViewById(I)Landroid/view/View;
HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->getPanelState(I)Landroidx/appcompat/app/AppCompatDelegateImpl$PanelFeatureState;
PLandroidx/appcompat/app/AppCompatDelegateImpl;->getPanelState(I)Landroidx/appcompat/app/AppCompatDelegateImpl$PanelFeatureState;
HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->initWindowDecorActionBar()V
PLandroidx/appcompat/app/AppCompatDelegateImpl;->initWindowDecorActionBar()V
HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->installViewFactory()V
PLandroidx/appcompat/app/AppCompatDelegateImpl;->installViewFactory()V
HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->mapNightMode(Landroid/content/Context;I)I
PLandroidx/appcompat/app/AppCompatDelegateImpl;->mapNightMode(Landroid/content/Context;I)I
HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->onCreate()V
PLandroidx/appcompat/app/AppCompatDelegateImpl;->onCreate()V
HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View;
HPLandroidx/appcompat/app/AppCompatDelegateImpl;->onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View;
PLandroidx/appcompat/app/AppCompatDelegateImpl;->onDestroy()V
HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->onPostCreate()V
PLandroidx/appcompat/app/AppCompatDelegateImpl;->onPostCreate()V
HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->onPostResume()V
PLandroidx/appcompat/app/AppCompatDelegateImpl;->onPostResume()V
HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->onStart()V
PLandroidx/appcompat/app/AppCompatDelegateImpl;->onStart()V
PLandroidx/appcompat/app/AppCompatDelegateImpl;->onStop()V
HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->requestWindowFeature(I)Z
PLandroidx/appcompat/app/AppCompatDelegateImpl;->requestWindowFeature(I)Z
HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->setContentView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V
PLandroidx/appcompat/app/AppCompatDelegateImpl;->setContentView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V
HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->setTheme(I)V
PLandroidx/appcompat/app/AppCompatDelegateImpl;->setTheme(I)V
HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->setTitle(Ljava/lang/CharSequence;)V
PLandroidx/appcompat/app/AppCompatDelegateImpl;->setTitle(Ljava/lang/CharSequence;)V
HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->throwFeatureRequestIfSubDecorInstalled()V
PLandroidx/appcompat/app/AppCompatDelegateImpl;->throwFeatureRequestIfSubDecorInstalled()V
HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->updateStatusGuard(Landroidx/core/view/WindowInsetsCompat;Landroid/graphics/Rect;)I
PLandroidx/appcompat/app/AppCompatDelegateImpl;->updateStatusGuard(Landroidx/core/view/WindowInsetsCompat;Landroid/graphics/Rect;)I
Landroidx/appcompat/app/AppCompatDelegateImpl$3;
HSPLandroidx/appcompat/app/AppCompatDelegateImpl$3;-><init>(Landroidx/appcompat/app/AppCompatDelegateImpl;)V
PLandroidx/appcompat/app/AppCompatDelegateImpl$3;-><init>(Landroidx/appcompat/app/AppCompatDelegateImpl;)V
HSPLandroidx/appcompat/app/AppCompatDelegateImpl$3;->onApplyWindowInsets(Landroid/view/View;Landroidx/core/view/WindowInsetsCompat;)Landroidx/core/view/WindowInsetsCompat;
PLandroidx/appcompat/app/AppCompatDelegateImpl$3;->onApplyWindowInsets(Landroid/view/View;Landroidx/core/view/WindowInsetsCompat;)Landroidx/core/view/WindowInsetsCompat;
Landroidx/appcompat/app/AppCompatDelegateImpl$4;
HSPLandroidx/appcompat/app/AppCompatDelegateImpl$4;-><init>(Landroidx/appcompat/app/AppCompatDelegateImpl;I)V
PLandroidx/appcompat/app/AppCompatDelegateImpl$4;-><init>(Landroidx/appcompat/app/AppCompatDelegateImpl;I)V
PLandroidx/appcompat/app/AppCompatDelegateImpl$4;->onDetachedFromWindow()V
Landroidx/appcompat/app/AppCompatDelegateImpl$Api24Impl;
HSPLandroidx/appcompat/app/AppCompatDelegateImpl$Api24Impl;->getLocales(Landroid/content/res/Configuration;)Landroidx/core/os/LocaleListCompat;
PLandroidx/appcompat/app/AppCompatDelegateImpl$Api24Impl;->getLocales(Landroid/content/res/Configuration;)Landroidx/core/os/LocaleListCompat;
Landroidx/appcompat/app/AppCompatDelegateImpl$AppCompatWindowCallback;
HSPLandroidx/appcompat/app/AppCompatDelegateImpl$AppCompatWindowCallback;-><init>(Landroidx/appcompat/app/AppCompatDelegateImpl;Landroid/view/Window$Callback;)V
PLandroidx/appcompat/app/AppCompatDelegateImpl$AppCompatWindowCallback;-><init>(Landroidx/appcompat/app/AppCompatDelegateImpl;Landroid/view/Window$Callback;)V
HSPLandroidx/appcompat/app/AppCompatDelegateImpl$AppCompatWindowCallback;->bypassOnContentChanged(Landroid/view/Window$Callback;)V
PLandroidx/appcompat/app/AppCompatDelegateImpl$AppCompatWindowCallback;->bypassOnContentChanged(Landroid/view/Window$Callback;)V
HSPLandroidx/appcompat/app/AppCompatDelegateImpl$AppCompatWindowCallback;->onContentChanged()V
PLandroidx/appcompat/app/AppCompatDelegateImpl$AppCompatWindowCallback;->onContentChanged()V
Landroidx/appcompat/app/AppCompatDelegateImpl$PanelFeatureState;
HSPLandroidx/appcompat/app/AppCompatDelegateImpl$PanelFeatureState;-><init>(I)V
PLandroidx/appcompat/app/AppCompatDelegateImpl$PanelFeatureState;-><init>(I)V
Landroidx/appcompat/app/AppCompatViewInflater;
HSPLandroidx/appcompat/app/AppCompatViewInflater;-><clinit>()V
PLandroidx/appcompat/app/AppCompatViewInflater;-><clinit>()V
HSPLandroidx/appcompat/app/AppCompatViewInflater;-><init>()V
PLandroidx/appcompat/app/AppCompatViewInflater;-><init>()V
HSPLandroidx/appcompat/app/AppCompatViewInflater;->createView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View;
HPLandroidx/appcompat/app/AppCompatViewInflater;->createView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View;
Landroidx/appcompat/app/AppLocalesMetadataHolderService;
Landroidx/appcompat/app/AppLocalesMetadataHolderService$Api24Impl;
HSPLandroidx/appcompat/app/AppLocalesMetadataHolderService$Api24Impl;->getDisabledComponentFlag()I
PLandroidx/appcompat/app/AppLocalesMetadataHolderService$Api24Impl;->getDisabledComponentFlag()I
Landroidx/appcompat/app/AppLocalesStorageHelper$SerialExecutor;
HSPLandroidx/appcompat/app/AppLocalesStorageHelper$SerialExecutor;-><init>(Ljava/util/concurrent/Executor;)V
PLandroidx/appcompat/app/AppLocalesStorageHelper$SerialExecutor;-><init>(Ljava/util/concurrent/Executor;)V
Landroidx/appcompat/app/AppLocalesStorageHelper$ThreadPerTaskExecutor;
HSPLandroidx/appcompat/app/AppLocalesStorageHelper$ThreadPerTaskExecutor;-><init>()V
PLandroidx/appcompat/app/AppLocalesStorageHelper$ThreadPerTaskExecutor;-><init>()V
Landroidx/appcompat/app/ToolbarActionBar$1;
HSPLandroidx/appcompat/app/ToolbarActionBar$1;-><init>(Ljava/lang/Object;I)V
PLandroidx/appcompat/app/ToolbarActionBar$1;-><init>(Ljava/lang/Object;I)V
HSPLandroidx/appcompat/app/ToolbarActionBar$1;->run()V
PLandroidx/appcompat/app/ToolbarActionBar$1;->run()V
Landroidx/appcompat/view/ContextThemeWrapper;
HSPLandroidx/appcompat/view/ContextThemeWrapper;-><init>(Landroid/content/Context;I)V
PLandroidx/appcompat/view/ContextThemeWrapper;-><init>(Landroid/content/Context;I)V
HSPLandroidx/appcompat/view/ContextThemeWrapper;->applyOverrideConfiguration(Landroid/content/res/Configuration;)V
PLandroidx/appcompat/view/ContextThemeWrapper;->applyOverrideConfiguration(Landroid/content/res/Configuration;)V
HSPLandroidx/appcompat/view/ContextThemeWrapper;->getResources()Landroid/content/res/Resources;
PLandroidx/appcompat/view/ContextThemeWrapper;->getResources()Landroid/content/res/Resources;
HSPLandroidx/appcompat/view/ContextThemeWrapper;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
HPLandroidx/appcompat/view/ContextThemeWrapper;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
HSPLandroidx/appcompat/view/ContextThemeWrapper;->getTheme()Landroid/content/res/Resources$Theme;
PLandroidx/appcompat/view/ContextThemeWrapper;->getTheme()Landroid/content/res/Resources$Theme;
HSPLandroidx/appcompat/view/ContextThemeWrapper;->initializeTheme()V
PLandroidx/appcompat/view/ContextThemeWrapper;->initializeTheme()V
Landroidx/appcompat/view/WindowCallbackWrapper;
HSPLandroidx/appcompat/view/WindowCallbackWrapper;-><init>(Landroid/view/Window$Callback;)V
PLandroidx/appcompat/view/WindowCallbackWrapper;-><init>(Landroid/view/Window$Callback;)V
HSPLandroidx/appcompat/view/WindowCallbackWrapper;->dispatchPopulateAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)Z
PLandroidx/appcompat/view/WindowCallbackWrapper;->dispatchPopulateAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)Z
HSPLandroidx/appcompat/view/WindowCallbackWrapper;->dispatchTouchEvent(Landroid/view/MotionEvent;)Z
HPLandroidx/appcompat/view/WindowCallbackWrapper;->dispatchTouchEvent(Landroid/view/MotionEvent;)Z
HSPLandroidx/appcompat/view/WindowCallbackWrapper;->getWrapped()Landroid/view/Window$Callback;
PLandroidx/appcompat/view/WindowCallbackWrapper;->getWrapped()Landroid/view/Window$Callback;
HSPLandroidx/appcompat/view/WindowCallbackWrapper;->onAttachedToWindow()V
PLandroidx/appcompat/view/WindowCallbackWrapper;->onAttachedToWindow()V
PLandroidx/appcompat/view/WindowCallbackWrapper;->onDetachedFromWindow()V
HSPLandroidx/appcompat/view/WindowCallbackWrapper;->onWindowAttributesChanged(Landroid/view/WindowManager$LayoutParams;)V
HPLandroidx/appcompat/view/WindowCallbackWrapper;->onWindowAttributesChanged(Landroid/view/WindowManager$LayoutParams;)V
HSPLandroidx/appcompat/view/WindowCallbackWrapper;->onWindowFocusChanged(Z)V
PLandroidx/appcompat/view/WindowCallbackWrapper;->onWindowFocusChanged(Z)V
Landroidx/appcompat/view/menu/MenuBuilder$Callback;
Landroidx/appcompat/view/menu/MenuPresenter$Callback;
Landroidx/appcompat/widget/AppCompatBackgroundHelper;
HSPLandroidx/appcompat/widget/AppCompatBackgroundHelper;-><init>(Landroid/view/View;)V
PLandroidx/appcompat/widget/AppCompatBackgroundHelper;-><init>(Landroid/view/View;)V
HSPLandroidx/appcompat/widget/AppCompatBackgroundHelper;->applySupportBackgroundTint()V
PLandroidx/appcompat/widget/AppCompatBackgroundHelper;->applySupportBackgroundTint()V
HSPLandroidx/appcompat/widget/AppCompatBackgroundHelper;->loadFromAttributes(Landroid/util/AttributeSet;I)V
PLandroidx/appcompat/widget/AppCompatBackgroundHelper;->loadFromAttributes(Landroid/util/AttributeSet;I)V
Landroidx/appcompat/widget/AppCompatDrawableManager;
HSPLandroidx/appcompat/widget/AppCompatDrawableManager;-><clinit>()V
PLandroidx/appcompat/widget/AppCompatDrawableManager;-><clinit>()V
HSPLandroidx/appcompat/widget/AppCompatDrawableManager;-><init>()V
PLandroidx/appcompat/widget/AppCompatDrawableManager;-><init>()V
HSPLandroidx/appcompat/widget/AppCompatDrawableManager;->access$000()Landroid/graphics/PorterDuff$Mode;
PLandroidx/appcompat/widget/AppCompatDrawableManager;->access$000()Landroid/graphics/PorterDuff$Mode;
HSPLandroidx/appcompat/widget/AppCompatDrawableManager;->get()Landroidx/appcompat/widget/AppCompatDrawableManager;
PLandroidx/appcompat/widget/AppCompatDrawableManager;->get()Landroidx/appcompat/widget/AppCompatDrawableManager;
HSPLandroidx/appcompat/widget/AppCompatDrawableManager;->getDrawable$1(Landroid/content/Context;I)Landroid/graphics/drawable/Drawable;
PLandroidx/appcompat/widget/AppCompatDrawableManager;->getDrawable$1(Landroid/content/Context;I)Landroid/graphics/drawable/Drawable;
HSPLandroidx/appcompat/widget/AppCompatDrawableManager;->preload()V
PLandroidx/appcompat/widget/AppCompatDrawableManager;->preload()V
Landroidx/appcompat/widget/AppCompatDrawableManager$1;
HSPLandroidx/appcompat/widget/AppCompatDrawableManager$1;-><init>()V
PLandroidx/appcompat/widget/AppCompatDrawableManager$1;-><init>()V
HSPLandroidx/appcompat/widget/AppCompatDrawableManager$1;->arrayContains(I[I)Z
PLandroidx/appcompat/widget/AppCompatDrawableManager$1;->arrayContains(I[I)Z
HSPLandroidx/appcompat/widget/AppCompatDrawableManager$1;->createDrawableFor(Landroidx/appcompat/widget/ResourceManagerInternal;Landroid/content/Context;I)Landroid/graphics/drawable/LayerDrawable;
PLandroidx/appcompat/widget/AppCompatDrawableManager$1;->createDrawableFor(Landroidx/appcompat/widget/ResourceManagerInternal;Landroid/content/Context;I)Landroid/graphics/drawable/LayerDrawable;
HSPLandroidx/appcompat/widget/AppCompatDrawableManager$1;->getTintListForDrawableRes(Landroid/content/Context;I)Landroid/content/res/ColorStateList;
PLandroidx/appcompat/widget/AppCompatDrawableManager$1;->getTintListForDrawableRes(Landroid/content/Context;I)Landroid/content/res/ColorStateList;
HSPLandroidx/appcompat/widget/AppCompatDrawableManager$1;->tintDrawable(Landroid/content/Context;ILandroid/graphics/drawable/Drawable;)Z
PLandroidx/appcompat/widget/AppCompatDrawableManager$1;->tintDrawable(Landroid/content/Context;ILandroid/graphics/drawable/Drawable;)Z
HSPLandroidx/appcompat/widget/AppCompatDrawableManager$1;->tintDrawableUsingColorFilter(Landroid/content/Context;ILandroid/graphics/drawable/Drawable;)Z
PLandroidx/appcompat/widget/AppCompatDrawableManager$1;->tintDrawableUsingColorFilter(Landroid/content/Context;ILandroid/graphics/drawable/Drawable;)Z
Landroidx/appcompat/widget/AppCompatImageHelper;
HSPLandroidx/appcompat/widget/AppCompatImageHelper;-><init>(Landroid/widget/ImageView;)V
PLandroidx/appcompat/widget/AppCompatImageHelper;-><init>(Landroid/widget/ImageView;)V
HSPLandroidx/appcompat/widget/AppCompatImageHelper;->applyImageLevel()V
PLandroidx/appcompat/widget/AppCompatImageHelper;->applyImageLevel()V
HSPLandroidx/appcompat/widget/AppCompatImageHelper;->applySupportImageTint()V
PLandroidx/appcompat/widget/AppCompatImageHelper;->applySupportImageTint()V
HSPLandroidx/appcompat/widget/AppCompatImageHelper;->hasOverlappingRendering()Z
PLandroidx/appcompat/widget/AppCompatImageHelper;->hasOverlappingRendering()Z
HSPLandroidx/appcompat/widget/AppCompatImageHelper;->loadFromAttributes(Landroid/util/AttributeSet;I)V
PLandroidx/appcompat/widget/AppCompatImageHelper;->loadFromAttributes(Landroid/util/AttributeSet;I)V
HSPLandroidx/appcompat/widget/AppCompatImageHelper;->obtainLevelFromDrawable(Landroid/graphics/drawable/Drawable;)V
PLandroidx/appcompat/widget/AppCompatImageHelper;->obtainLevelFromDrawable(Landroid/graphics/drawable/Drawable;)V
Landroidx/appcompat/widget/AppCompatImageView;
HSPLandroidx/appcompat/widget/AppCompatImageView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
PLandroidx/appcompat/widget/AppCompatImageView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
HSPLandroidx/appcompat/widget/AppCompatImageView;->drawableStateChanged()V
PLandroidx/appcompat/widget/AppCompatImageView;->drawableStateChanged()V
HSPLandroidx/appcompat/widget/AppCompatImageView;->hasOverlappingRendering()Z
PLandroidx/appcompat/widget/AppCompatImageView;->hasOverlappingRendering()Z
HSPLandroidx/appcompat/widget/AppCompatImageView;->setImageDrawable(Landroid/graphics/drawable/Drawable;)V
PLandroidx/appcompat/widget/AppCompatImageView;->setImageDrawable(Landroid/graphics/drawable/Drawable;)V
Landroidx/appcompat/widget/ContentFrameLayout;
HSPLandroidx/appcompat/widget/ContentFrameLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
PLandroidx/appcompat/widget/ContentFrameLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
HSPLandroidx/appcompat/widget/ContentFrameLayout;->getMinWidthMajor()Landroid/util/TypedValue;
PLandroidx/appcompat/widget/ContentFrameLayout;->getMinWidthMajor()Landroid/util/TypedValue;
HSPLandroidx/appcompat/widget/ContentFrameLayout;->getMinWidthMinor()Landroid/util/TypedValue;
PLandroidx/appcompat/widget/ContentFrameLayout;->getMinWidthMinor()Landroid/util/TypedValue;
HSPLandroidx/appcompat/widget/ContentFrameLayout;->onAttachedToWindow()V
PLandroidx/appcompat/widget/ContentFrameLayout;->onAttachedToWindow()V
PLandroidx/appcompat/widget/ContentFrameLayout;->onDetachedFromWindow()V
HSPLandroidx/appcompat/widget/ContentFrameLayout;->onMeasure(II)V
HPLandroidx/appcompat/widget/ContentFrameLayout;->onMeasure(II)V
HSPLandroidx/appcompat/widget/ContentFrameLayout;->setAttachListener(Landroidx/appcompat/widget/ContentFrameLayout$OnAttachListener;)V
PLandroidx/appcompat/widget/ContentFrameLayout;->setAttachListener(Landroidx/appcompat/widget/ContentFrameLayout$OnAttachListener;)V
HSPLandroidx/appcompat/widget/ContentFrameLayout;->setDecorPadding(IIII)V
PLandroidx/appcompat/widget/ContentFrameLayout;->setDecorPadding(IIII)V
Landroidx/appcompat/widget/ContentFrameLayout$OnAttachListener;
Landroidx/appcompat/widget/DrawableUtils;
HSPLandroidx/appcompat/widget/DrawableUtils;-><clinit>()V
PLandroidx/appcompat/widget/DrawableUtils;-><clinit>()V
HSPLandroidx/appcompat/widget/DrawableUtils;->fixDrawable(Landroid/graphics/drawable/Drawable;)V
HPLandroidx/appcompat/widget/DrawableUtils;->fixDrawable(Landroid/graphics/drawable/Drawable;)V
Landroidx/appcompat/widget/DrawableUtils$$ExternalSyntheticApiModelOutline0;
HSPLandroidx/appcompat/widget/DrawableUtils$$ExternalSyntheticApiModelOutline0;->m$1(Landroid/graphics/Insets;)I
PLandroidx/appcompat/widget/DrawableUtils$$ExternalSyntheticApiModelOutline0;->m$1(Landroid/graphics/Insets;)I
HSPLandroidx/appcompat/widget/DrawableUtils$$ExternalSyntheticApiModelOutline0;->m$2(Landroid/graphics/Insets;)I
PLandroidx/appcompat/widget/DrawableUtils$$ExternalSyntheticApiModelOutline0;->m$2(Landroid/graphics/Insets;)I
HSPLandroidx/appcompat/widget/DrawableUtils$$ExternalSyntheticApiModelOutline0;->m$3(Landroid/graphics/Insets;)I
PLandroidx/appcompat/widget/DrawableUtils$$ExternalSyntheticApiModelOutline0;->m$3(Landroid/graphics/Insets;)I
HSPLandroidx/appcompat/widget/DrawableUtils$$ExternalSyntheticApiModelOutline0;->m()Landroid/graphics/BlendMode;
PLandroidx/appcompat/widget/DrawableUtils$$ExternalSyntheticApiModelOutline0;->m()Landroid/graphics/BlendMode;
HSPLandroidx/appcompat/widget/DrawableUtils$$ExternalSyntheticApiModelOutline0;->m(Landroid/graphics/Insets;)I
PLandroidx/appcompat/widget/DrawableUtils$$ExternalSyntheticApiModelOutline0;->m(Landroid/graphics/Insets;)I
Landroidx/appcompat/widget/FitWindowsFrameLayout;
HSPLandroidx/appcompat/widget/FitWindowsFrameLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
PLandroidx/appcompat/widget/FitWindowsFrameLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
HSPLandroidx/appcompat/widget/FitWindowsFrameLayout;->fitSystemWindows(Landroid/graphics/Rect;)Z
PLandroidx/appcompat/widget/FitWindowsFrameLayout;->fitSystemWindows(Landroid/graphics/Rect;)Z
Landroidx/appcompat/widget/ResourceManagerInternal;
HSPLandroidx/appcompat/widget/ResourceManagerInternal;-><clinit>()V
PLandroidx/appcompat/widget/ResourceManagerInternal;-><clinit>()V
HSPLandroidx/appcompat/widget/ResourceManagerInternal;-><init>()V
PLandroidx/appcompat/widget/ResourceManagerInternal;-><init>()V
HSPLandroidx/appcompat/widget/ResourceManagerInternal;->createDrawableIfNeeded(Landroid/content/Context;I)Landroid/graphics/drawable/Drawable;
PLandroidx/appcompat/widget/ResourceManagerInternal;->createDrawableIfNeeded(Landroid/content/Context;I)Landroid/graphics/drawable/Drawable;
HSPLandroidx/appcompat/widget/ResourceManagerInternal;->get()Landroidx/appcompat/widget/ResourceManagerInternal;
PLandroidx/appcompat/widget/ResourceManagerInternal;->get()Landroidx/appcompat/widget/ResourceManagerInternal;
HSPLandroidx/appcompat/widget/ResourceManagerInternal;->getCachedDrawable(Landroid/content/Context;J)Landroid/graphics/drawable/Drawable;
PLandroidx/appcompat/widget/ResourceManagerInternal;->getCachedDrawable(Landroid/content/Context;J)Landroid/graphics/drawable/Drawable;
HSPLandroidx/appcompat/widget/ResourceManagerInternal;->getDrawable(Landroid/content/Context;I)Landroid/graphics/drawable/Drawable;
PLandroidx/appcompat/widget/ResourceManagerInternal;->getDrawable(Landroid/content/Context;I)Landroid/graphics/drawable/Drawable;
HSPLandroidx/appcompat/widget/ResourceManagerInternal;->getDrawable(Landroid/content/Context;IZ)Landroid/graphics/drawable/Drawable;
PLandroidx/appcompat/widget/ResourceManagerInternal;->getDrawable(Landroid/content/Context;IZ)Landroid/graphics/drawable/Drawable;
HSPLandroidx/appcompat/widget/ResourceManagerInternal;->getTintList(Landroid/content/Context;I)Landroid/content/res/ColorStateList;
PLandroidx/appcompat/widget/ResourceManagerInternal;->getTintList(Landroid/content/Context;I)Landroid/content/res/ColorStateList;
HSPLandroidx/appcompat/widget/ResourceManagerInternal;->loadDrawableFromDelegates(Landroid/content/Context;I)Landroid/graphics/drawable/Drawable;
PLandroidx/appcompat/widget/ResourceManagerInternal;->loadDrawableFromDelegates(Landroid/content/Context;I)Landroid/graphics/drawable/Drawable;
HSPLandroidx/appcompat/widget/ResourceManagerInternal;->setHooks(Landroidx/appcompat/widget/ResourceManagerInternal$ResourceManagerHooks;)V
PLandroidx/appcompat/widget/ResourceManagerInternal;->setHooks(Landroidx/appcompat/widget/ResourceManagerInternal$ResourceManagerHooks;)V
HSPLandroidx/appcompat/widget/ResourceManagerInternal;->tintDrawable(Landroid/content/Context;IZLandroid/graphics/drawable/Drawable;)Landroid/graphics/drawable/Drawable;
PLandroidx/appcompat/widget/ResourceManagerInternal;->tintDrawable(Landroid/content/Context;IZLandroid/graphics/drawable/Drawable;)Landroid/graphics/drawable/Drawable;
HSPLandroidx/appcompat/widget/ResourceManagerInternal;->tintDrawableUsingColorFilter(Landroid/content/Context;ILandroid/graphics/drawable/Drawable;)Z
PLandroidx/appcompat/widget/ResourceManagerInternal;->tintDrawableUsingColorFilter(Landroid/content/Context;ILandroid/graphics/drawable/Drawable;)Z
Landroidx/appcompat/widget/ResourceManagerInternal$ColorFilterLruCache;
HSPLandroidx/appcompat/widget/ResourceManagerInternal$ColorFilterLruCache;-><init>()V
PLandroidx/appcompat/widget/ResourceManagerInternal$ColorFilterLruCache;-><init>()V
Landroidx/appcompat/widget/ResourceManagerInternal$ResourceManagerHooks;
Landroidx/appcompat/widget/ResourcesWrapper;
Landroidx/appcompat/widget/ThemeUtils;
HSPLandroidx/appcompat/widget/ThemeUtils;-><clinit>()V
PLandroidx/appcompat/widget/ThemeUtils;-><clinit>()V
HSPLandroidx/appcompat/widget/ThemeUtils;->checkAppCompatTheme(Landroid/view/View;Landroid/content/Context;)V
PLandroidx/appcompat/widget/ThemeUtils;->checkAppCompatTheme(Landroid/view/View;Landroid/content/Context;)V
Landroidx/appcompat/widget/TintContextWrapper;
HSPLandroidx/appcompat/widget/TintContextWrapper;-><clinit>()V
PLandroidx/appcompat/widget/TintContextWrapper;-><clinit>()V
HSPLandroidx/appcompat/widget/TintContextWrapper;->wrap(Landroid/content/Context;)V
PLandroidx/appcompat/widget/TintContextWrapper;->wrap(Landroid/content/Context;)V
Landroidx/appcompat/widget/TintResources;
Landroidx/appcompat/widget/TintTypedArray;
HSPLandroidx/appcompat/widget/TintTypedArray;-><init>(Landroid/content/Context;Landroid/content/res/TypedArray;)V
PLandroidx/appcompat/widget/TintTypedArray;-><init>(Landroid/content/Context;Landroid/content/res/TypedArray;)V
HSPLandroidx/appcompat/widget/TintTypedArray;->getDrawableIfKnown(I)Landroid/graphics/drawable/Drawable;
PLandroidx/appcompat/widget/TintTypedArray;->getDrawableIfKnown(I)Landroid/graphics/drawable/Drawable;
HSPLandroidx/appcompat/widget/TintTypedArray;->getResourceId(II)I
PLandroidx/appcompat/widget/TintTypedArray;->getResourceId(II)I
HSPLandroidx/appcompat/widget/TintTypedArray;->getWrappedTypeArray()Landroid/content/res/TypedArray;
PLandroidx/appcompat/widget/TintTypedArray;->getWrappedTypeArray()Landroid/content/res/TypedArray;
HSPLandroidx/appcompat/widget/TintTypedArray;->hasValue(I)Z
PLandroidx/appcompat/widget/TintTypedArray;->hasValue(I)Z
HSPLandroidx/appcompat/widget/TintTypedArray;->obtainStyledAttributes(Landroid/content/Context;Landroid/util/AttributeSet;[II)Landroidx/appcompat/widget/TintTypedArray;
PLandroidx/appcompat/widget/TintTypedArray;->obtainStyledAttributes(Landroid/content/Context;Landroid/util/AttributeSet;[II)Landroidx/appcompat/widget/TintTypedArray;
HSPLandroidx/appcompat/widget/TintTypedArray;->recycle()V
PLandroidx/appcompat/widget/TintTypedArray;->recycle()V
Landroidx/appcompat/widget/VectorEnabledTintResources;
Landroidx/appcompat/widget/ViewStubCompat;
HSPLandroidx/appcompat/widget/ViewStubCompat;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
PLandroidx/appcompat/widget/ViewStubCompat;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
HSPLandroidx/appcompat/widget/ViewStubCompat;->setVisibility(I)V
PLandroidx/appcompat/widget/ViewStubCompat;->setVisibility(I)V
Landroidx/appcompat/widget/ViewUtils;
HSPLandroidx/appcompat/widget/ViewUtils;-><clinit>()V
PLandroidx/appcompat/widget/ViewUtils;-><clinit>()V
Landroidx/arch/core/executor/ArchTaskExecutor;
HSPLandroidx/arch/core/executor/ArchTaskExecutor;-><clinit>()V
PLandroidx/arch/core/executor/ArchTaskExecutor;-><clinit>()V
HSPLandroidx/arch/core/executor/ArchTaskExecutor;-><init>()V
PLandroidx/arch/core/executor/ArchTaskExecutor;-><init>()V
HSPLandroidx/arch/core/executor/ArchTaskExecutor;->getInstance()Landroidx/arch/core/executor/ArchTaskExecutor;
HPLandroidx/arch/core/executor/ArchTaskExecutor;->getInstance()Landroidx/arch/core/executor/ArchTaskExecutor;
HSPLandroidx/arch/core/executor/ArchTaskExecutor;->isMainThread()Z
HPLandroidx/arch/core/executor/ArchTaskExecutor;->isMainThread()Z
HSPLandroidx/arch/core/executor/ArchTaskExecutor;->postToMainThread(Ljava/lang/Runnable;)V
PLandroidx/arch/core/executor/ArchTaskExecutor;->postToMainThread(Ljava/lang/Runnable;)V
Landroidx/arch/core/executor/DefaultTaskExecutor;
HSPLandroidx/arch/core/executor/DefaultTaskExecutor;-><init>()V
PLandroidx/arch/core/executor/DefaultTaskExecutor;-><init>()V
HSPLandroidx/arch/core/executor/DefaultTaskExecutor;->createAsync(Landroid/os/Looper;)Landroid/os/Handler;
PLandroidx/arch/core/executor/DefaultTaskExecutor;->createAsync(Landroid/os/Looper;)Landroid/os/Handler;
HSPLandroidx/arch/core/executor/DefaultTaskExecutor;->postToMainThread(Ljava/lang/Runnable;)V
PLandroidx/arch/core/executor/DefaultTaskExecutor;->postToMainThread(Ljava/lang/Runnable;)V
Landroidx/arch/core/executor/DefaultTaskExecutor$1;
HSPLandroidx/arch/core/executor/DefaultTaskExecutor$1;-><init>()V
PLandroidx/arch/core/executor/DefaultTaskExecutor$1;-><init>()V
Landroidx/arch/core/internal/FastSafeIterableMap;
HSPLandroidx/arch/core/internal/FastSafeIterableMap;-><init>()V
PLandroidx/arch/core/internal/FastSafeIterableMap;-><init>()V
HSPLandroidx/arch/core/internal/FastSafeIterableMap;->ceil(Ljava/lang/Object;)Ljava/util/Map$Entry;
HPLandroidx/arch/core/internal/FastSafeIterableMap;->ceil(Ljava/lang/Object;)Ljava/util/Map$Entry;
HSPLandroidx/arch/core/internal/FastSafeIterableMap;->contains(Ljava/lang/Object;)Z
HPLandroidx/arch/core/internal/FastSafeIterableMap;->contains(Ljava/lang/Object;)Z
HSPLandroidx/arch/core/internal/FastSafeIterableMap;->get(Ljava/lang/Object;)Landroidx/arch/core/internal/SafeIterableMap$Entry;
HPLandroidx/arch/core/internal/FastSafeIterableMap;->get(Ljava/lang/Object;)Landroidx/arch/core/internal/SafeIterableMap$Entry;
HSPLandroidx/arch/core/internal/FastSafeIterableMap;->putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
PLandroidx/arch/core/internal/FastSafeIterableMap;->putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroidx/arch/core/internal/FastSafeIterableMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
HPLandroidx/arch/core/internal/FastSafeIterableMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/arch/core/internal/SafeIterableMap;
HSPLandroidx/arch/core/internal/SafeIterableMap;-><init>()V
HPLandroidx/arch/core/internal/SafeIterableMap;-><init>()V
HSPLandroidx/arch/core/internal/SafeIterableMap;->descendingIterator()Ljava/util/Iterator;
PLandroidx/arch/core/internal/SafeIterableMap;->descendingIterator()Ljava/util/Iterator;
HSPLandroidx/arch/core/internal/SafeIterableMap;->eldest()Ljava/util/Map$Entry;
PLandroidx/arch/core/internal/SafeIterableMap;->eldest()Ljava/util/Map$Entry;
HSPLandroidx/arch/core/internal/SafeIterableMap;->get(Ljava/lang/Object;)Landroidx/arch/core/internal/SafeIterableMap$Entry;
HPLandroidx/arch/core/internal/SafeIterableMap;->get(Ljava/lang/Object;)Landroidx/arch/core/internal/SafeIterableMap$Entry;
HSPLandroidx/arch/core/internal/SafeIterableMap;->iterator()Ljava/util/Iterator;
PLandroidx/arch/core/internal/SafeIterableMap;->iterator()Ljava/util/Iterator;
HSPLandroidx/arch/core/internal/SafeIterableMap;->iteratorWithAdditions()Landroidx/arch/core/internal/SafeIterableMap$IteratorWithAdditions;
HPLandroidx/arch/core/internal/SafeIterableMap;->iteratorWithAdditions()Landroidx/arch/core/internal/SafeIterableMap$IteratorWithAdditions;
HSPLandroidx/arch/core/internal/SafeIterableMap;->newest()Ljava/util/Map$Entry;
PLandroidx/arch/core/internal/SafeIterableMap;->newest()Ljava/util/Map$Entry;
HSPLandroidx/arch/core/internal/SafeIterableMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Landroidx/arch/core/internal/SafeIterableMap$Entry;
PLandroidx/arch/core/internal/SafeIterableMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Landroidx/arch/core/internal/SafeIterableMap$Entry;
HSPLandroidx/arch/core/internal/SafeIterableMap;->putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
PLandroidx/arch/core/internal/SafeIterableMap;->putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroidx/arch/core/internal/SafeIterableMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
HPLandroidx/arch/core/internal/SafeIterableMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroidx/arch/core/internal/SafeIterableMap;->size()I
PLandroidx/arch/core/internal/SafeIterableMap;->size()I
Landroidx/arch/core/internal/SafeIterableMap$AscendingIterator;
HSPLandroidx/arch/core/internal/SafeIterableMap$AscendingIterator;-><init>(Landroidx/arch/core/internal/SafeIterableMap$Entry;Landroidx/arch/core/internal/SafeIterableMap$Entry;I)V
PLandroidx/arch/core/internal/SafeIterableMap$AscendingIterator;-><init>(Landroidx/arch/core/internal/SafeIterableMap$Entry;Landroidx/arch/core/internal/SafeIterableMap$Entry;I)V
Landroidx/arch/core/internal/SafeIterableMap$Entry;
HSPLandroidx/arch/core/internal/SafeIterableMap$Entry;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V
HPLandroidx/arch/core/internal/SafeIterableMap$Entry;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V
HSPLandroidx/arch/core/internal/SafeIterableMap$Entry;->getKey()Ljava/lang/Object;
PLandroidx/arch/core/internal/SafeIterableMap$Entry;->getKey()Ljava/lang/Object;
HSPLandroidx/arch/core/internal/SafeIterableMap$Entry;->getValue()Ljava/lang/Object;
PLandroidx/arch/core/internal/SafeIterableMap$Entry;->getValue()Ljava/lang/Object;
Landroidx/arch/core/internal/SafeIterableMap$IteratorWithAdditions;
HSPLandroidx/arch/core/internal/SafeIterableMap$IteratorWithAdditions;-><init>(Landroidx/arch/core/internal/SafeIterableMap;)V
PLandroidx/arch/core/internal/SafeIterableMap$IteratorWithAdditions;-><init>(Landroidx/arch/core/internal/SafeIterableMap;)V
HSPLandroidx/arch/core/internal/SafeIterableMap$IteratorWithAdditions;->hasNext()Z
PLandroidx/arch/core/internal/SafeIterableMap$IteratorWithAdditions;->hasNext()Z
HSPLandroidx/arch/core/internal/SafeIterableMap$IteratorWithAdditions;->next()Ljava/lang/Object;
PLandroidx/arch/core/internal/SafeIterableMap$IteratorWithAdditions;->next()Ljava/lang/Object;
HSPLandroidx/arch/core/internal/SafeIterableMap$IteratorWithAdditions;->supportRemove(Landroidx/arch/core/internal/SafeIterableMap$Entry;)V
PLandroidx/arch/core/internal/SafeIterableMap$IteratorWithAdditions;->supportRemove(Landroidx/arch/core/internal/SafeIterableMap$Entry;)V
Landroidx/arch/core/internal/SafeIterableMap$ListIterator;
HSPLandroidx/arch/core/internal/SafeIterableMap$ListIterator;-><init>(Landroidx/arch/core/internal/SafeIterableMap$Entry;Landroidx/arch/core/internal/SafeIterableMap$Entry;)V
PLandroidx/arch/core/internal/SafeIterableMap$ListIterator;-><init>(Landroidx/arch/core/internal/SafeIterableMap$Entry;Landroidx/arch/core/internal/SafeIterableMap$Entry;)V
HSPLandroidx/arch/core/internal/SafeIterableMap$ListIterator;->hasNext()Z
PLandroidx/arch/core/internal/SafeIterableMap$ListIterator;->hasNext()Z
HSPLandroidx/arch/core/internal/SafeIterableMap$ListIterator;->next()Ljava/lang/Object;
PLandroidx/arch/core/internal/SafeIterableMap$ListIterator;->next()Ljava/lang/Object;
HSPLandroidx/arch/core/internal/SafeIterableMap$ListIterator;->nextNode()Landroidx/arch/core/internal/SafeIterableMap$Entry;
PLandroidx/arch/core/internal/SafeIterableMap$ListIterator;->nextNode()Landroidx/arch/core/internal/SafeIterableMap$Entry;
PLandroidx/arch/core/internal/SafeIterableMap$ListIterator;->supportRemove(Landroidx/arch/core/internal/SafeIterableMap$Entry;)V
Landroidx/arch/core/internal/SafeIterableMap$SupportRemove;
HSPLandroidx/arch/core/internal/SafeIterableMap$SupportRemove;-><init>()V
HPLandroidx/arch/core/internal/SafeIterableMap$SupportRemove;-><init>()V
Landroidx/arch/core/util/Function;
Landroidx/collection/ArrayMap;
HSPLandroidx/collection/ArrayMap;-><init>()V
PLandroidx/collection/ArrayMap;-><init>()V
Landroidx/collection/ArrayMap$KeyIterator;
HSPLandroidx/collection/ArrayMap$KeyIterator;-><init>(Landroidx/collection/ArraySet;)V
PLandroidx/collection/ArrayMap$KeyIterator;-><init>(Landroidx/collection/ArraySet;)V
Landroidx/collection/ArraySet;
HSPLandroidx/collection/ArraySet;-><clinit>()V
PLandroidx/collection/ArraySet;-><clinit>()V
HSPLandroidx/collection/ArraySet;-><init>(I)V
PLandroidx/collection/ArraySet;-><init>(I)V
HSPLandroidx/collection/ArraySet;->add(Ljava/lang/Object;)Z
PLandroidx/collection/ArraySet;->add(Ljava/lang/Object;)Z
HSPLandroidx/collection/ArraySet;->allocArrays(I)V
PLandroidx/collection/ArraySet;->allocArrays(I)V
HSPLandroidx/collection/ArraySet;->clear()V
PLandroidx/collection/ArraySet;->clear()V
HSPLandroidx/collection/ArraySet;->freeArrays([I[Ljava/lang/Object;I)V
PLandroidx/collection/ArraySet;->freeArrays([I[Ljava/lang/Object;I)V
HSPLandroidx/collection/ArraySet;->indexOf(ILjava/lang/Object;)I
PLandroidx/collection/ArraySet;->indexOf(ILjava/lang/Object;)I
HSPLandroidx/collection/ArraySet;->iterator()Ljava/util/Iterator;
PLandroidx/collection/ArraySet;->iterator()Ljava/util/Iterator;
PLandroidx/collection/ArraySet;->removeAt(I)V
HSPLandroidx/collection/ArraySet;->toArray()[Ljava/lang/Object;
PLandroidx/collection/ArraySet;->toArray()[Ljava/lang/Object;
Landroidx/collection/ContainerHelpers;
HSPLandroidx/collection/ContainerHelpers;-><clinit>()V
PLandroidx/collection/ContainerHelpers;-><clinit>()V
PLandroidx/collection/ContainerHelpers;->binarySearch([III)I
HSPLandroidx/collection/ContainerHelpers;->binarySearch([JIJ)I
HPLandroidx/collection/ContainerHelpers;->binarySearch([JIJ)I
Landroidx/collection/IndexBasedArrayIterator;
HSPLandroidx/collection/IndexBasedArrayIterator;-><init>(I)V
PLandroidx/collection/IndexBasedArrayIterator;-><init>(I)V
HSPLandroidx/collection/IndexBasedArrayIterator;->hasNext()Z
PLandroidx/collection/IndexBasedArrayIterator;->hasNext()Z
PLandroidx/collection/IndexBasedArrayIterator;->next()Ljava/lang/Object;
PLandroidx/collection/IndexBasedArrayIterator;->remove()V
Landroidx/collection/LongSparseArray;
HSPLandroidx/collection/LongSparseArray;-><clinit>()V
PLandroidx/collection/LongSparseArray;-><clinit>()V
HSPLandroidx/collection/LongSparseArray;-><init>()V
PLandroidx/collection/LongSparseArray;-><init>()V
HSPLandroidx/collection/LongSparseArray;-><init>(I)V
HPLandroidx/collection/LongSparseArray;-><init>(I)V
HSPLandroidx/collection/LongSparseArray;->clear()V
PLandroidx/collection/LongSparseArray;->clear()V
HSPLandroidx/collection/LongSparseArray;->get(JLjava/lang/Long;)Ljava/lang/Object;
HPLandroidx/collection/LongSparseArray;->get(JLjava/lang/Long;)Ljava/lang/Object;
HSPLandroidx/collection/LongSparseArray;->indexOfKey(J)I
PLandroidx/collection/LongSparseArray;->indexOfKey(J)I
HSPLandroidx/collection/LongSparseArray;->keyAt(I)J
PLandroidx/collection/LongSparseArray;->keyAt(I)J
HSPLandroidx/collection/LongSparseArray;->put(JLjava/lang/Object;)V
HPLandroidx/collection/LongSparseArray;->put(JLjava/lang/Object;)V
HSPLandroidx/collection/LongSparseArray;->remove(J)V
PLandroidx/collection/LongSparseArray;->remove(J)V
HSPLandroidx/collection/LongSparseArray;->size()I
PLandroidx/collection/LongSparseArray;->size()I
HSPLandroidx/collection/LongSparseArray;->valueAt(I)Ljava/lang/Object;
PLandroidx/collection/LongSparseArray;->valueAt(I)Ljava/lang/Object;
Landroidx/collection/LruCache;
HSPLandroidx/collection/LruCache;-><init>(I)V
PLandroidx/collection/LruCache;-><init>(I)V
HSPLandroidx/collection/LruCache;->create(Ljava/lang/Object;)Ljava/lang/Object;
PLandroidx/collection/LruCache;->create(Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroidx/collection/LruCache;->get(Ljava/lang/Object;)Ljava/lang/Object;
PLandroidx/collection/LruCache;->get(Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroidx/collection/LruCache;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
PLandroidx/collection/LruCache;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroidx/collection/LruCache;->safeSizeOf(Ljava/lang/Object;Ljava/lang/Object;)I
PLandroidx/collection/LruCache;->safeSizeOf(Ljava/lang/Object;Ljava/lang/Object;)I
HSPLandroidx/collection/LruCache;->sizeOf(Ljava/lang/Object;Ljava/lang/Object;)I
PLandroidx/collection/LruCache;->sizeOf(Ljava/lang/Object;Ljava/lang/Object;)I
HSPLandroidx/collection/LruCache;->trimToSize(I)V
PLandroidx/collection/LruCache;->trimToSize(I)V
Landroidx/collection/SimpleArrayMap;
HSPLandroidx/collection/SimpleArrayMap;-><init>()V
PLandroidx/collection/SimpleArrayMap;-><init>()V
HSPLandroidx/collection/SimpleArrayMap;->getOrDefault(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
PLandroidx/collection/SimpleArrayMap;->getOrDefault(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroidx/collection/SimpleArrayMap;->indexOf(ILjava/lang/Object;)I
PLandroidx/collection/SimpleArrayMap;->indexOf(ILjava/lang/Object;)I
HSPLandroidx/collection/SimpleArrayMap;->indexOfKey(Ljava/lang/Object;)I
PLandroidx/collection/SimpleArrayMap;->indexOfKey(Ljava/lang/Object;)I
PLandroidx/collection/SimpleArrayMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/collection/SparseArrayCompat;
HSPLandroidx/collection/SparseArrayCompat;-><clinit>()V
PLandroidx/collection/SparseArrayCompat;-><clinit>()V
HSPLandroidx/collection/SparseArrayCompat;-><init>()V
PLandroidx/collection/SparseArrayCompat;-><init>()V
Landroidx/compose/animation/AnimatedContentKt$AnimatedContent$2;
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$2;-><clinit>()V
PLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$2;-><clinit>()V
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$2;-><init>()V
PLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$2;-><init>()V
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
PLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/AnimatedContentKt$AnimatedContent$3;
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$3;-><init>(Landroidx/compose/animation/core/Transition;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function3;II)V
HPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$3;-><init>(Landroidx/compose/animation/core/Transition;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function3;II)V
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$3;-><init>(Ljava/lang/Object;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Alignment;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function4;II)V
PLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$3;-><init>(Ljava/lang/Object;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Alignment;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function4;II)V
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$3;->invoke(Landroidx/compose/runtime/Composer;I)V
HPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$3;->invoke(Landroidx/compose/runtime/Composer;I)V
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
HPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/AnimatedContentKt$AnimatedContent$4;
Landroidx/compose/animation/AnimatedContentKt$AnimatedContent$5;
Landroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1;
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1;-><init>(Landroidx/compose/animation/core/Transition;Ljava/lang/Object;ILkotlin/jvm/functions/Function1;Landroidx/compose/animation/AnimatedContentTransitionScopeImpl;Landroidx/compose/runtime/snapshots/SnapshotStateList;Lkotlin/jvm/functions/Function4;)V
HPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1;-><init>(Landroidx/compose/animation/core/Transition;Ljava/lang/Object;ILkotlin/jvm/functions/Function1;Landroidx/compose/animation/AnimatedContentTransitionScopeImpl;Landroidx/compose/runtime/snapshots/SnapshotStateList;Lkotlin/jvm/functions/Function4;)V
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
HPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$1$1;
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$1$1;-><init>(ILjava/lang/Object;Ljava/lang/Object;)V
HPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$1$1;-><init>(ILjava/lang/Object;Ljava/lang/Object;)V
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
HPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$4$1;
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$4$1;-><init>(Landroidx/compose/animation/ExitTransition;)V
PLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$4$1;-><init>(Landroidx/compose/animation/ExitTransition;)V
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$4$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
PLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$4$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$5;
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$5;-><init>(Landroidx/compose/animation/AnimatedContentTransitionScopeImpl;Ljava/lang/Object;Landroidx/compose/runtime/snapshots/SnapshotStateList;Lkotlin/jvm/functions/Function4;I)V
PLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$5;-><init>(Landroidx/compose/animation/AnimatedContentTransitionScopeImpl;Ljava/lang/Object;Landroidx/compose/runtime/snapshots/SnapshotStateList;Lkotlin/jvm/functions/Function4;I)V
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$5;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
HPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$5;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$5$1;
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$5$1;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;I)V
HPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$5$1;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;I)V
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$5$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
HPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$5$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$5$1$invoke$$inlined$onDispose$1;
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$5$1$invoke$$inlined$onDispose$1;-><init>(Landroidx/compose/runtime/snapshots/SnapshotStateList;Ljava/lang/Object;Landroidx/compose/animation/AnimatedContentTransitionScopeImpl;)V
PLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$5$1$invoke$$inlined$onDispose$1;-><init>(Landroidx/compose/runtime/snapshots/SnapshotStateList;Ljava/lang/Object;Landroidx/compose/animation/AnimatedContentTransitionScopeImpl;)V
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$5$1$invoke$$inlined$onDispose$1;->dispose()V
HPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$5$1$invoke$$inlined$onDispose$1;->dispose()V
Landroidx/compose/animation/AnimatedContentKt$AnimatedContent$9;
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$9;-><init>(Landroidx/compose/animation/core/Transition;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Alignment;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function4;II)V
HPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$9;-><init>(Landroidx/compose/animation/core/Transition;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Alignment;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function4;II)V
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$9;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
HPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$9;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/AnimatedContentKt$SizeTransform$1;
HSPLandroidx/compose/animation/AnimatedContentKt$SizeTransform$1;-><clinit>()V
PLandroidx/compose/animation/AnimatedContentKt$SizeTransform$1;-><clinit>()V
HSPLandroidx/compose/animation/AnimatedContentKt$SizeTransform$1;-><init>()V
PLandroidx/compose/animation/AnimatedContentKt$SizeTransform$1;-><init>()V
HSPLandroidx/compose/animation/AnimatedContentKt$SizeTransform$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
HPLandroidx/compose/animation/AnimatedContentKt$SizeTransform$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/AnimatedContentMeasurePolicy;
HSPLandroidx/compose/animation/AnimatedContentMeasurePolicy;-><init>(Landroidx/compose/animation/AnimatedContentTransitionScopeImpl;)V
PLandroidx/compose/animation/AnimatedContentMeasurePolicy;-><init>(Landroidx/compose/animation/AnimatedContentTransitionScopeImpl;)V
HSPLandroidx/compose/animation/AnimatedContentMeasurePolicy;->getRootScope()Landroidx/compose/animation/AnimatedContentTransitionScopeImpl;
PLandroidx/compose/animation/AnimatedContentMeasurePolicy;->getRootScope()Landroidx/compose/animation/AnimatedContentTransitionScopeImpl;
HSPLandroidx/compose/animation/AnimatedContentMeasurePolicy;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Ljava/util/List;J)Landroidx/compose/ui/layout/MeasureResult;
HPLandroidx/compose/animation/AnimatedContentMeasurePolicy;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Ljava/util/List;J)Landroidx/compose/ui/layout/MeasureResult;
Landroidx/compose/animation/AnimatedContentMeasurePolicy$measure$3;
HSPLandroidx/compose/animation/AnimatedContentMeasurePolicy$measure$3;-><init>([Landroidx/compose/ui/layout/Placeable;Landroidx/compose/animation/AnimatedContentMeasurePolicy;II)V
PLandroidx/compose/animation/AnimatedContentMeasurePolicy$measure$3;-><init>([Landroidx/compose/ui/layout/Placeable;Landroidx/compose/animation/AnimatedContentMeasurePolicy;II)V
HSPLandroidx/compose/animation/AnimatedContentMeasurePolicy$measure$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
HPLandroidx/compose/animation/AnimatedContentMeasurePolicy$measure$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/AnimatedContentScope;
Landroidx/compose/animation/AnimatedContentScopeImpl;
HSPLandroidx/compose/animation/AnimatedContentScopeImpl;-><init>()V
PLandroidx/compose/animation/AnimatedContentScopeImpl;-><init>()V
Landroidx/compose/animation/AnimatedContentTransitionScopeImpl;
HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;-><init>(Landroidx/compose/animation/core/Transition;Landroidx/compose/ui/Alignment;)V
PLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;-><init>(Landroidx/compose/animation/core/Transition;Landroidx/compose/ui/Alignment;)V
HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->createSizeAnimationModifier$animation_release(Landroidx/compose/animation/ContentTransform;Landroidx/compose/runtime/Composer;)Landroidx/compose/ui/Modifier;
HPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->createSizeAnimationModifier$animation_release(Landroidx/compose/animation/ContentTransform;Landroidx/compose/runtime/Composer;)Landroidx/compose/ui/Modifier;
HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->getContentAlignment$animation_release()Landroidx/compose/ui/Alignment;
PLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->getContentAlignment$animation_release()Landroidx/compose/ui/Alignment;
HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->getTargetSizeMap$animation_release()Ljava/util/LinkedHashMap;
PLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->getTargetSizeMap$animation_release()Ljava/util/LinkedHashMap;
HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->setContentAlignment$animation_release(Landroidx/compose/ui/Alignment;)V
PLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->setContentAlignment$animation_release(Landroidx/compose/ui/Alignment;)V
HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->setMeasuredSize-ozmzZPI$animation_release(J)V
PLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->setMeasuredSize-ozmzZPI$animation_release(J)V
Landroidx/compose/animation/AnimatedContentTransitionScopeImpl$ChildData;
HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl$ChildData;-><init>(Z)V
PLandroidx/compose/animation/AnimatedContentTransitionScopeImpl$ChildData;-><init>(Z)V
HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl$ChildData;->equals(Ljava/lang/Object;)Z
HPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl$ChildData;->equals(Ljava/lang/Object;)Z
HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl$ChildData;->isTarget()Z
PLandroidx/compose/animation/AnimatedContentTransitionScopeImpl$ChildData;->isTarget()Z
HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl$ChildData;->setTarget(Z)V
PLandroidx/compose/animation/AnimatedContentTransitionScopeImpl$ChildData;->setTarget(Z)V
Landroidx/compose/animation/AnimatedContentTransitionScopeImpl$SizeModifier;
HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl$SizeModifier;-><init>(Landroidx/compose/animation/AnimatedContentTransitionScopeImpl;Landroidx/compose/animation/core/Transition$DeferredAnimation;Landroidx/compose/runtime/MutableState;)V
PLandroidx/compose/animation/AnimatedContentTransitionScopeImpl$SizeModifier;-><init>(Landroidx/compose/animation/AnimatedContentTransitionScopeImpl;Landroidx/compose/animation/core/Transition$DeferredAnimation;Landroidx/compose/runtime/MutableState;)V
HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl$SizeModifier;->getSizeTransform()Landroidx/compose/runtime/State;
PLandroidx/compose/animation/AnimatedContentTransitionScopeImpl$SizeModifier;->getSizeTransform()Landroidx/compose/runtime/State;
HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl$SizeModifier;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult;
HPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl$SizeModifier;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult;
Landroidx/compose/animation/AnimatedEnterExitMeasurePolicy;
HSPLandroidx/compose/animation/AnimatedEnterExitMeasurePolicy;-><init>(Landroidx/compose/animation/AnimatedVisibilityScopeImpl;)V
PLandroidx/compose/animation/AnimatedEnterExitMeasurePolicy;-><init>(Landroidx/compose/animation/AnimatedVisibilityScopeImpl;)V
HSPLandroidx/compose/animation/AnimatedEnterExitMeasurePolicy;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Ljava/util/List;J)Landroidx/compose/ui/layout/MeasureResult;
HPLandroidx/compose/animation/AnimatedEnterExitMeasurePolicy;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Ljava/util/List;J)Landroidx/compose/ui/layout/MeasureResult;
Landroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$1;
HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$1;-><clinit>()V
PLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$1;-><clinit>()V
HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$1;-><init>()V
PLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$1;-><init>()V
HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
PLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$shouldDisposeAfterExit$2$1;
HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$shouldDisposeAfterExit$2$1;-><init>(Landroidx/compose/animation/core/Transition;Landroidx/compose/runtime/State;Lkotlin/coroutines/Continuation;)V
PLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$shouldDisposeAfterExit$2$1;-><init>(Landroidx/compose/animation/core/Transition;Landroidx/compose/runtime/State;Lkotlin/coroutines/Continuation;)V
HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$shouldDisposeAfterExit$2$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
PLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$shouldDisposeAfterExit$2$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$shouldDisposeAfterExit$2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
PLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$shouldDisposeAfterExit$2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$shouldDisposeAfterExit$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
HPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$shouldDisposeAfterExit$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$shouldDisposeAfterExit$2$1$1;
HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$shouldDisposeAfterExit$2$1$1;-><init>(Landroidx/compose/animation/core/Transition;)V
HPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$shouldDisposeAfterExit$2$1$1;-><init>(Landroidx/compose/animation/core/Transition;)V
HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$shouldDisposeAfterExit$2$1$1;->invoke()Ljava/lang/Object;
HPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$shouldDisposeAfterExit$2$1$1;->invoke()Ljava/lang/Object;
Landroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$shouldDisposeAfterExit$2$1$2;
HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$shouldDisposeAfterExit$2$1$2;-><init>(Landroidx/compose/runtime/ProduceStateScope;Landroidx/compose/animation/core/Transition;Landroidx/compose/runtime/State;)V
HPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$shouldDisposeAfterExit$2$1$2;-><init>(Landroidx/compose/runtime/ProduceStateScope;Landroidx/compose/animation/core/Transition;Landroidx/compose/runtime/State;)V
HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$shouldDisposeAfterExit$2$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
HPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$shouldDisposeAfterExit$2$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
Landroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$2;
HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$2;-><init>(ZLandroidx/compose/ui/Modifier;Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;Ljava/lang/String;Lkotlin/jvm/functions/Function3;II)V
PLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$2;-><init>(ZLandroidx/compose/ui/Modifier;Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;Ljava/lang/String;Lkotlin/jvm/functions/Function3;II)V
Landroidx/compose/animation/AnimatedVisibilityScope;
Landroidx/compose/animation/AnimatedVisibilityScopeImpl;
HSPLandroidx/compose/animation/AnimatedVisibilityScopeImpl;-><init>()V
PLandroidx/compose/animation/AnimatedVisibilityScopeImpl;-><init>()V
HSPLandroidx/compose/animation/AnimatedVisibilityScopeImpl;->getTargetSize$animation_release()Landroidx/compose/runtime/ParcelableSnapshotMutableState;
PLandroidx/compose/animation/AnimatedVisibilityScopeImpl;->getTargetSize$animation_release()Landroidx/compose/runtime/ParcelableSnapshotMutableState;
Landroidx/compose/animation/AnimationModifierKt;
HSPLandroidx/compose/animation/AnimationModifierKt;-><clinit>()V
PLandroidx/compose/animation/AnimationModifierKt;-><clinit>()V
HSPLandroidx/compose/animation/AnimationModifierKt;->getInvalidSize()J
PLandroidx/compose/animation/AnimationModifierKt;->getInvalidSize()J
HSPLandroidx/compose/animation/AnimationModifierKt;->isValid-ozmzZPI(J)Z
PLandroidx/compose/animation/AnimationModifierKt;->isValid-ozmzZPI(J)Z
Landroidx/compose/animation/ChangeSize;
HSPLandroidx/compose/animation/ChangeSize;-><init>(Landroidx/compose/animation/core/FiniteAnimationSpec;Landroidx/compose/ui/Alignment;Lkotlin/jvm/functions/Function1;Z)V
HPLandroidx/compose/animation/ChangeSize;-><init>(Landroidx/compose/animation/core/FiniteAnimationSpec;Landroidx/compose/ui/Alignment;Lkotlin/jvm/functions/Function1;Z)V
Landroidx/compose/animation/ColorVectorConverterKt;
HSPLandroidx/compose/animation/ColorVectorConverterKt;-><clinit>()V
PLandroidx/compose/animation/ColorVectorConverterKt;-><clinit>()V
HSPLandroidx/compose/animation/ColorVectorConverterKt;->getVectorConverter()Lkotlin/jvm/functions/Function1;
PLandroidx/compose/animation/ColorVectorConverterKt;->getVectorConverter()Lkotlin/jvm/functions/Function1;
Landroidx/compose/animation/ContentTransform;
HSPLandroidx/compose/animation/ContentTransform;-><init>(Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;)V
HPLandroidx/compose/animation/ContentTransform;-><init>(Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;)V
HSPLandroidx/compose/animation/ContentTransform;->getInitialContentExit()Landroidx/compose/animation/ExitTransition;
PLandroidx/compose/animation/ContentTransform;->getInitialContentExit()Landroidx/compose/animation/ExitTransition;
HSPLandroidx/compose/animation/ContentTransform;->getSizeTransform()Landroidx/compose/animation/SizeTransform;
PLandroidx/compose/animation/ContentTransform;->getSizeTransform()Landroidx/compose/animation/SizeTransform;
HSPLandroidx/compose/animation/ContentTransform;->getTargetContentEnter()Landroidx/compose/animation/EnterTransition;
PLandroidx/compose/animation/ContentTransform;->getTargetContentEnter()Landroidx/compose/animation/EnterTransition;
HSPLandroidx/compose/animation/ContentTransform;->getTargetContentZIndex()F
PLandroidx/compose/animation/ContentTransform;->getTargetContentZIndex()F
Landroidx/compose/animation/CrossfadeKt;
HSPLandroidx/compose/animation/CrossfadeKt;->AnimatedContent(Landroidx/compose/animation/core/Transition;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Alignment;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function4;Landroidx/compose/runtime/Composer;II)V
HPLandroidx/compose/animation/CrossfadeKt;->AnimatedContent(Landroidx/compose/animation/core/Transition;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Alignment;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function4;Landroidx/compose/runtime/Composer;II)V
HSPLandroidx/compose/animation/CrossfadeKt;->AnimatedContent(Ljava/lang/Object;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Alignment;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function4;Landroidx/compose/runtime/Composer;II)V
HPLandroidx/compose/animation/CrossfadeKt;->AnimatedContent(Ljava/lang/Object;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Alignment;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function4;Landroidx/compose/runtime/Composer;II)V
HSPLandroidx/compose/animation/CrossfadeKt;->AnimatedEnterExitImpl(Landroidx/compose/animation/core/Transition;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V
HPLandroidx/compose/animation/CrossfadeKt;->AnimatedEnterExitImpl(Landroidx/compose/animation/core/Transition;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V
HSPLandroidx/compose/animation/CrossfadeKt;->AnimatedVisibility(ZLandroidx/compose/ui/Modifier;Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;Ljava/lang/String;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V
HPLandroidx/compose/animation/CrossfadeKt;->AnimatedVisibility(ZLandroidx/compose/ui/Modifier;Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;Ljava/lang/String;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V
HSPLandroidx/compose/animation/CrossfadeKt;->access$getExitFinished(Landroidx/compose/animation/core/Transition;)Z
HPLandroidx/compose/animation/CrossfadeKt;->access$getExitFinished(Landroidx/compose/animation/core/Transition;)Z
HSPLandroidx/compose/animation/CrossfadeKt;->targetEnterExit(Landroidx/compose/animation/core/Transition;Lkotlin/jvm/functions/Function1;Ljava/lang/Object;Landroidx/compose/runtime/Composer;)Landroidx/compose/animation/EnterExitState;
HPLandroidx/compose/animation/CrossfadeKt;->targetEnterExit(Landroidx/compose/animation/core/Transition;Lkotlin/jvm/functions/Function1;Ljava/lang/Object;Landroidx/compose/runtime/Composer;)Landroidx/compose/animation/EnterExitState;
Landroidx/compose/animation/CrossfadeKt$Crossfade$4$1;
HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$4$1;-><init>(Ljava/lang/Object;I)V
HPLandroidx/compose/animation/CrossfadeKt$Crossfade$4$1;-><init>(Ljava/lang/Object;I)V
HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$4$1;->invoke(Ljava/lang/Object;)Ljava/lang/Boolean;
HPLandroidx/compose/animation/CrossfadeKt$Crossfade$4$1;->invoke(Ljava/lang/Object;)Ljava/lang/Boolean;
HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$4$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
HPLandroidx/compose/animation/CrossfadeKt$Crossfade$4$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/CrossfadeKt$Crossfade$5$1$1$1;
HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$5$1$1$1;-><init>(Landroidx/compose/runtime/State;I)V
HPLandroidx/compose/animation/CrossfadeKt$Crossfade$5$1$1$1;-><init>(Landroidx/compose/runtime/State;I)V
HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$5$1$1$1;->invoke(Landroidx/compose/ui/graphics/ReusableGraphicsLayerScope;)V
HPLandroidx/compose/animation/CrossfadeKt$Crossfade$5$1$1$1;->invoke(Landroidx/compose/ui/graphics/ReusableGraphicsLayerScope;)V
HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$5$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
HPLandroidx/compose/animation/CrossfadeKt$Crossfade$5$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/CrossfadeKt$Crossfade$5$1$alpha$2;
HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$5$1$alpha$2;-><init>(Ljava/lang/Object;I)V
PLandroidx/compose/animation/CrossfadeKt$Crossfade$5$1$alpha$2;-><init>(Ljava/lang/Object;I)V
HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$5$1$alpha$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
HPLandroidx/compose/animation/CrossfadeKt$Crossfade$5$1$alpha$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/EnterExitState;
HSPLandroidx/compose/animation/EnterExitState;-><clinit>()V
PLandroidx/compose/animation/EnterExitState;-><clinit>()V
HSPLandroidx/compose/animation/EnterExitState;-><init>(Ljava/lang/String;I)V
PLandroidx/compose/animation/EnterExitState;-><init>(Ljava/lang/String;I)V
Landroidx/compose/animation/EnterExitTransitionElement;
HSPLandroidx/compose/animation/EnterExitTransitionElement;-><init>(Landroidx/compose/animation/core/Transition;Landroidx/compose/animation/core/Transition$DeferredAnimation;Landroidx/compose/animation/core/Transition$DeferredAnimation;Landroidx/compose/animation/core/Transition$DeferredAnimation;Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;Lkotlin/jvm/functions/Function1;)V
HPLandroidx/compose/animation/EnterExitTransitionElement;-><init>(Landroidx/compose/animation/core/Transition;Landroidx/compose/animation/core/Transition$DeferredAnimation;Landroidx/compose/animation/core/Transition$DeferredAnimation;Landroidx/compose/animation/core/Transition$DeferredAnimation;Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;Lkotlin/jvm/functions/Function1;)V
HSPLandroidx/compose/animation/EnterExitTransitionElement;->create()Landroidx/compose/ui/Modifier$Node;
HPLandroidx/compose/animation/EnterExitTransitionElement;->create()Landroidx/compose/ui/Modifier$Node;
HSPLandroidx/compose/animation/EnterExitTransitionElement;->equals(Ljava/lang/Object;)Z
HPLandroidx/compose/animation/EnterExitTransitionElement;->equals(Ljava/lang/Object;)Z
HSPLandroidx/compose/animation/EnterExitTransitionElement;->update(Landroidx/compose/ui/Modifier$Node;)V
HPLandroidx/compose/animation/EnterExitTransitionElement;->update(Landroidx/compose/ui/Modifier$Node;)V
Landroidx/compose/animation/EnterExitTransitionKt;
HSPLandroidx/compose/animation/EnterExitTransitionKt;-><clinit>()V
PLandroidx/compose/animation/EnterExitTransitionKt;-><clinit>()V
HSPLandroidx/compose/animation/EnterExitTransitionKt;->createModifier(Landroidx/compose/animation/core/Transition;Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier;
HPLandroidx/compose/animation/EnterExitTransitionKt;->createModifier(Landroidx/compose/animation/core/Transition;Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier;
HSPLandroidx/compose/animation/EnterExitTransitionKt;->expandIn(Landroidx/compose/animation/core/FiniteAnimationSpec;Landroidx/compose/ui/Alignment;Lkotlin/jvm/functions/Function1;Z)Landroidx/compose/animation/EnterTransition;
PLandroidx/compose/animation/EnterExitTransitionKt;->expandIn(Landroidx/compose/animation/core/FiniteAnimationSpec;Landroidx/compose/ui/Alignment;Lkotlin/jvm/functions/Function1;Z)Landroidx/compose/animation/EnterTransition;
HSPLandroidx/compose/animation/EnterExitTransitionKt;->expandVertically$default(Landroidx/compose/animation/core/TweenSpec;Landroidx/compose/ui/BiasAlignment$Vertical;I)Landroidx/compose/animation/EnterTransition;
HPLandroidx/compose/animation/EnterExitTransitionKt;->expandVertically$default(Landroidx/compose/animation/core/TweenSpec;Landroidx/compose/ui/BiasAlignment$Vertical;I)Landroidx/compose/animation/EnterTransition;
HSPLandroidx/compose/animation/EnterExitTransitionKt;->fadeIn$default(Landroidx/compose/animation/core/TweenSpec;FI)Landroidx/compose/animation/EnterTransition;
HPLandroidx/compose/animation/EnterExitTransitionKt;->fadeIn$default(Landroidx/compose/animation/core/TweenSpec;FI)Landroidx/compose/animation/EnterTransition;
HSPLandroidx/compose/animation/EnterExitTransitionKt;->fadeOut$default(Landroidx/compose/animation/core/TweenSpec;I)Landroidx/compose/animation/ExitTransition;
HPLandroidx/compose/animation/EnterExitTransitionKt;->fadeOut$default(Landroidx/compose/animation/core/TweenSpec;I)Landroidx/compose/animation/ExitTransition;
HSPLandroidx/compose/animation/EnterExitTransitionKt;->scaleIn-L8ZKh-E$default(Landroidx/compose/animation/core/TweenSpec;F)Landroidx/compose/animation/EnterTransition;
PLandroidx/compose/animation/EnterExitTransitionKt;->scaleIn-L8ZKh-E$default(Landroidx/compose/animation/core/TweenSpec;F)Landroidx/compose/animation/EnterTransition;
HSPLandroidx/compose/animation/EnterExitTransitionKt;->shrinkOut(Landroidx/compose/animation/core/FiniteAnimationSpec;Landroidx/compose/ui/Alignment;Lkotlin/jvm/functions/Function1;Z)Landroidx/compose/animation/ExitTransition;
PLandroidx/compose/animation/EnterExitTransitionKt;->shrinkOut(Landroidx/compose/animation/core/FiniteAnimationSpec;Landroidx/compose/ui/Alignment;Lkotlin/jvm/functions/Function1;Z)Landroidx/compose/animation/ExitTransition;
HSPLandroidx/compose/animation/EnterExitTransitionKt;->shrinkVertically$default(Landroidx/compose/animation/core/TweenSpec;Landroidx/compose/ui/BiasAlignment$Vertical;I)Landroidx/compose/animation/ExitTransition;
HPLandroidx/compose/animation/EnterExitTransitionKt;->shrinkVertically$default(Landroidx/compose/animation/core/TweenSpec;Landroidx/compose/ui/BiasAlignment$Vertical;I)Landroidx/compose/animation/ExitTransition;
HSPLandroidx/compose/animation/EnterExitTransitionKt;->slideInHorizontally(Landroidx/compose/animation/core/TweenSpec;Lkotlin/jvm/functions/Function1;)Landroidx/compose/animation/EnterTransition;
PLandroidx/compose/animation/EnterExitTransitionKt;->slideInHorizontally(Landroidx/compose/animation/core/TweenSpec;Lkotlin/jvm/functions/Function1;)Landroidx/compose/animation/EnterTransition;
HSPLandroidx/compose/animation/EnterExitTransitionKt;->slideOutHorizontally(Landroidx/compose/animation/core/TweenSpec;Lkotlin/jvm/functions/Function1;)Landroidx/compose/animation/ExitTransition;
PLandroidx/compose/animation/EnterExitTransitionKt;->slideOutHorizontally(Landroidx/compose/animation/core/TweenSpec;Lkotlin/jvm/functions/Function1;)Landroidx/compose/animation/ExitTransition;
HSPLandroidx/compose/animation/EnterExitTransitionKt;->toAlignment(Landroidx/compose/ui/Alignment$Vertical;)Landroidx/compose/ui/BiasAlignment;
HPLandroidx/compose/animation/EnterExitTransitionKt;->toAlignment(Landroidx/compose/ui/Alignment$Vertical;)Landroidx/compose/ui/BiasAlignment;
Landroidx/compose/animation/EnterExitTransitionKt$createGraphicsLayerBlock$$inlined$animateValue$1;
HSPLandroidx/compose/animation/EnterExitTransitionKt$createGraphicsLayerBlock$$inlined$animateValue$1;-><clinit>()V
PLandroidx/compose/animation/EnterExitTransitionKt$createGraphicsLayerBlock$$inlined$animateValue$1;-><clinit>()V
HSPLandroidx/compose/animation/EnterExitTransitionKt$createGraphicsLayerBlock$$inlined$animateValue$1;-><init>()V
PLandroidx/compose/animation/EnterExitTransitionKt$createGraphicsLayerBlock$$inlined$animateValue$1;-><init>()V
HSPLandroidx/compose/animation/EnterExitTransitionKt$createGraphicsLayerBlock$$inlined$animateValue$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
HPLandroidx/compose/animation/EnterExitTransitionKt$createGraphicsLayerBlock$$inlined$animateValue$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/EnterExitTransitionKt$createGraphicsLayerBlock$alpha$2;
HSPLandroidx/compose/animation/EnterExitTransitionKt$createGraphicsLayerBlock$alpha$2;-><init>(Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;I)V
HPLandroidx/compose/animation/EnterExitTransitionKt$createGraphicsLayerBlock$alpha$2;-><init>(Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;I)V
HSPLandroidx/compose/animation/EnterExitTransitionKt$createGraphicsLayerBlock$alpha$2;->invoke(Landroidx/compose/animation/core/Transition$Segment;Landroidx/compose/runtime/Composer;)Landroidx/compose/animation/core/FiniteAnimationSpec;
HPLandroidx/compose/animation/EnterExitTransitionKt$createGraphicsLayerBlock$alpha$2;->invoke(Landroidx/compose/animation/core/Transition$Segment;Landroidx/compose/runtime/Composer;)Landroidx/compose/animation/core/FiniteAnimationSpec;
HSPLandroidx/compose/animation/EnterExitTransitionKt$createGraphicsLayerBlock$alpha$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
HPLandroidx/compose/animation/EnterExitTransitionKt$createGraphicsLayerBlock$alpha$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/EnterExitTransitionKt$expandIn$1;
HSPLandroidx/compose/animation/EnterExitTransitionKt$expandIn$1;-><clinit>()V
PLandroidx/compose/animation/EnterExitTransitionKt$expandIn$1;-><clinit>()V
HSPLandroidx/compose/animation/EnterExitTransitionKt$expandIn$1;-><init>(I)V
PLandroidx/compose/animation/EnterExitTransitionKt$expandIn$1;-><init>(I)V
HSPLandroidx/compose/animation/EnterExitTransitionKt$expandIn$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
HPLandroidx/compose/animation/EnterExitTransitionKt$expandIn$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroidx/compose/animation/EnterExitTransitionKt$expandIn$1;->invoke(Z)Ljava/lang/Boolean;
PLandroidx/compose/animation/EnterExitTransitionKt$expandIn$1;->invoke(Z)Ljava/lang/Boolean;
Landroidx/compose/animation/EnterExitTransitionKt$expandVertically$2;
HSPLandroidx/compose/animation/EnterExitTransitionKt$expandVertically$2;-><init>(ILkotlin/jvm/functions/Function1;)V
HPLandroidx/compose/animation/EnterExitTransitionKt$expandVertically$2;-><init>(ILkotlin/jvm/functions/Function1;)V
PLandroidx/compose/animation/EnterExitTransitionKt$expandVertically$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
HPLandroidx/compose/animation/EnterExitTransitionKt$expandVertically$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
HPLandroidx/compose/animation/EnterExitTransitionKt$expandVertically$2;->invoke-mHKZG7I(J)J
Landroidx/compose/animation/EnterExitTransitionModifierNode;
HSPLandroidx/compose/animation/EnterExitTransitionModifierNode;-><init>(Landroidx/compose/animation/core/Transition;Landroidx/compose/animation/core/Transition$DeferredAnimation;Landroidx/compose/animation/core/Transition$DeferredAnimation;Landroidx/compose/animation/core/Transition$DeferredAnimation;Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;Lkotlin/jvm/functions/Function1;)V
PLandroidx/compose/animation/EnterExitTransitionModifierNode;-><init>(Landroidx/compose/animation/core/Transition;Landroidx/compose/animation/core/Transition$DeferredAnimation;Landroidx/compose/animation/core/Transition$DeferredAnimation;Landroidx/compose/animation/core/Transition$DeferredAnimation;Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;Lkotlin/jvm/functions/Function1;)V
HSPLandroidx/compose/animation/EnterExitTransitionModifierNode;->getAlignment()Landroidx/compose/ui/Alignment;
HPLandroidx/compose/animation/EnterExitTransitionModifierNode;->getAlignment()Landroidx/compose/ui/Alignment;
PLandroidx/compose/animation/EnterExitTransitionModifierNode;->getEnter()Landroidx/compose/animation/EnterTransition;
PLandroidx/compose/animation/EnterExitTransitionModifierNode;->getExit()Landroidx/compose/animation/ExitTransition;
HSPLandroidx/compose/animation/EnterExitTransitionModifierNode;->getGraphicsLayerBlock()Lkotlin/jvm/functions/Function1;
PLandroidx/compose/animation/EnterExitTransitionModifierNode;->getGraphicsLayerBlock()Lkotlin/jvm/functions/Function1;
HSPLandroidx/compose/animation/EnterExitTransitionModifierNode;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult;
HPLandroidx/compose/animation/EnterExitTransitionModifierNode;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult;
HSPLandroidx/compose/animation/EnterExitTransitionModifierNode;->onAttach()V
HPLandroidx/compose/animation/EnterExitTransitionModifierNode;->onAttach()V
HSPLandroidx/compose/animation/EnterExitTransitionModifierNode;->setEnter(Landroidx/compose/animation/EnterTransition;)V
PLandroidx/compose/animation/EnterExitTransitionModifierNode;->setEnter(Landroidx/compose/animation/EnterTransition;)V
HSPLandroidx/compose/animation/EnterExitTransitionModifierNode;->setExit(Landroidx/compose/animation/ExitTransition;)V
PLandroidx/compose/animation/EnterExitTransitionModifierNode;->setExit(Landroidx/compose/animation/ExitTransition;)V
HSPLandroidx/compose/animation/EnterExitTransitionModifierNode;->setGraphicsLayerBlock(Lkotlin/jvm/functions/Function1;)V
PLandroidx/compose/animation/EnterExitTransitionModifierNode;->setGraphicsLayerBlock(Lkotlin/jvm/functions/Function1;)V
HSPLandroidx/compose/animation/EnterExitTransitionModifierNode;->setOffsetAnimation(Landroidx/compose/animation/
Download .txt
gitextract_glkkya1o/

├── .editorconfig
├── .gitattributes
├── .github/
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── config.yml
│   │   ├── report_issue.yml
│   │   └── request_feature.yml
│   ├── pull_request_template.md
│   ├── renovate.json5
│   └── workflows/
│       ├── build_pull_request.yml
│       └── build_push.yml
├── .gitignore
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── app/
│   ├── .idea/
│   │   ├── .gitignore
│   │   ├── .name
│   │   ├── discord.xml
│   │   ├── gradle.xml
│   │   ├── misc.xml
│   │   └── vcs.xml
│   ├── build.gradle.kts
│   ├── proguard-android-optimize.txt
│   ├── proguard-rules.pro
│   ├── shortcuts.xml
│   └── src/
│       ├── debug/
│       │   └── res/
│       │       ├── drawable/
│       │       │   └── ic_launcher_foreground.xml
│       │       └── mipmap/
│       │           ├── ic_launcher.xml
│       │           └── ic_launcher_round.xml
│       ├── main/
│       │   ├── AndroidManifest.xml
│       │   ├── assets/
│       │   │   └── aniyomi.lua
│       │   ├── baseline-prof.txt
│       │   ├── java/
│       │   │   ├── aniyomi/
│       │   │   │   └── util/
│       │   │   │       └── DataSaver.kt
│       │   │   ├── eu/
│       │   │   │   └── kanade/
│       │   │   │       ├── core/
│       │   │   │       │   ├── preference/
│       │   │   │       │   │   ├── CheckboxState.kt
│       │   │   │       │   │   └── PreferenceMutableState.kt
│       │   │   │       │   └── util/
│       │   │   │       │       ├── AnimeSourceUtil.kt
│       │   │   │       │       ├── CollectionUtils.kt
│       │   │   │       │       ├── MangaSourceUtil.kt
│       │   │   │       │       └── RxJavaExtensions.kt
│       │   │   │       ├── domain/
│       │   │   │       │   ├── DomainModule.kt
│       │   │   │       │   ├── SYDomainModule.kt
│       │   │   │       │   ├── base/
│       │   │   │       │   │   ├── BasePreferences.kt
│       │   │   │       │   │   └── ExtensionInstallerPreference.kt
│       │   │   │       │   ├── download/
│       │   │   │       │   │   ├── anime/
│       │   │   │       │   │   │   └── interactor/
│       │   │   │       │   │   │       └── DeleteEpisodeDownload.kt
│       │   │   │       │   │   └── manga/
│       │   │   │       │   │       └── interactor/
│       │   │   │       │   │           └── DeleteChapterDownload.kt
│       │   │   │       │   ├── entries/
│       │   │   │       │   │   ├── anime/
│       │   │   │       │   │   │   ├── interactor/
│       │   │   │       │   │   │   │   ├── SetAnimeViewerFlags.kt
│       │   │   │       │   │   │   │   ├── SyncSeasonsWithSource.kt
│       │   │   │       │   │   │   │   └── UpdateAnime.kt
│       │   │   │       │   │   │   └── model/
│       │   │   │       │   │   │       └── Anime.kt
│       │   │   │       │   │   └── manga/
│       │   │   │       │   │       ├── interactor/
│       │   │   │       │   │       │   ├── GetExcludedScanlators.kt
│       │   │   │       │   │       │   ├── SetExcludedScanlators.kt
│       │   │   │       │   │       │   ├── SetMangaViewerFlags.kt
│       │   │   │       │   │       │   └── UpdateManga.kt
│       │   │   │       │   │       └── model/
│       │   │   │       │   │           └── Manga.kt
│       │   │   │       │   ├── extension/
│       │   │   │       │   │   ├── anime/
│       │   │   │       │   │   │   ├── interactor/
│       │   │   │       │   │   │   │   ├── GetAnimeExtensionLanguages.kt
│       │   │   │       │   │   │   │   ├── GetAnimeExtensionSources.kt
│       │   │   │       │   │   │   │   ├── GetAnimeExtensionsByType.kt
│       │   │   │       │   │   │   │   └── TrustAnimeExtension.kt
│       │   │   │       │   │   │   └── model/
│       │   │   │       │   │   │       └── AnimeExtensions.kt
│       │   │   │       │   │   └── manga/
│       │   │   │       │   │       ├── interactor/
│       │   │   │       │   │       │   ├── GetMangaExtensionLanguages.kt
│       │   │   │       │   │       │   ├── GetMangaExtensionSources.kt
│       │   │   │       │   │       │   ├── GetMangaExtensionsByType.kt
│       │   │   │       │   │       │   └── TrustMangaExtension.kt
│       │   │   │       │   │       └── model/
│       │   │   │       │   │           └── MangaExtensions.kt
│       │   │   │       │   ├── items/
│       │   │   │       │   │   ├── chapter/
│       │   │   │       │   │   │   ├── interactor/
│       │   │   │       │   │   │   │   ├── GetAvailableScanlators.kt
│       │   │   │       │   │   │   │   ├── SetReadStatus.kt
│       │   │   │       │   │   │   │   └── SyncChaptersWithSource.kt
│       │   │   │       │   │   │   └── model/
│       │   │   │       │   │   │       ├── Chapter.kt
│       │   │   │       │   │   │       └── ChapterFilter.kt
│       │   │   │       │   │   └── episode/
│       │   │   │       │   │       ├── interactor/
│       │   │   │       │   │       │   ├── SetSeenStatus.kt
│       │   │   │       │   │       │   └── SyncEpisodesWithSource.kt
│       │   │   │       │   │       └── model/
│       │   │   │       │   │           ├── Episode.kt
│       │   │   │       │   │           └── EpisodeFilter.kt
│       │   │   │       │   ├── source/
│       │   │   │       │   │   ├── anime/
│       │   │   │       │   │   │   ├── interactor/
│       │   │   │       │   │   │   │   ├── GetAnimeIncognitoState.kt
│       │   │   │       │   │   │   │   ├── GetAnimeSourcesWithFavoriteCount.kt
│       │   │   │       │   │   │   │   ├── GetEnabledAnimeSources.kt
│       │   │   │       │   │   │   │   ├── GetLanguagesWithAnimeSources.kt
│       │   │   │       │   │   │   │   ├── ToggleAnimeIncognito.kt
│       │   │   │       │   │   │   │   ├── ToggleAnimeSource.kt
│       │   │   │       │   │   │   │   └── ToggleAnimeSourcePin.kt
│       │   │   │       │   │   │   └── model/
│       │   │   │       │   │   │       └── AnimeSource.kt
│       │   │   │       │   │   ├── interactor/
│       │   │   │       │   │   │   ├── SetMigrateSorting.kt
│       │   │   │       │   │   │   └── ToggleLanguage.kt
│       │   │   │       │   │   ├── manga/
│       │   │   │       │   │   │   ├── interactor/
│       │   │   │       │   │   │   │   ├── GetEnabledMangaSources.kt
│       │   │   │       │   │   │   │   ├── GetLanguagesWithMangaSources.kt
│       │   │   │       │   │   │   │   ├── GetMangaIncognitoState.kt
│       │   │   │       │   │   │   │   ├── GetMangaSourcesWithFavoriteCount.kt
│       │   │   │       │   │   │   │   ├── ToggleExcludeFromMangaDataSaver.kt
│       │   │   │       │   │   │   │   ├── ToggleMangaIncognito.kt
│       │   │   │       │   │   │   │   ├── ToggleMangaSource.kt
│       │   │   │       │   │   │   │   └── ToggleMangaSourcePin.kt
│       │   │   │       │   │   │   └── model/
│       │   │   │       │   │   │       └── MangaSource.kt
│       │   │   │       │   │   └── service/
│       │   │   │       │   │       └── SourcePreferences.kt
│       │   │   │       │   ├── track/
│       │   │   │       │   │   ├── anime/
│       │   │   │       │   │   │   ├── interactor/
│       │   │   │       │   │   │   │   ├── AddAnimeTracks.kt
│       │   │   │       │   │   │   │   ├── RefreshAnimeTracks.kt
│       │   │   │       │   │   │   │   ├── SyncEpisodeProgressWithTrack.kt
│       │   │   │       │   │   │   │   └── TrackEpisode.kt
│       │   │   │       │   │   │   ├── model/
│       │   │   │       │   │   │   │   └── AnimeTrack.kt
│       │   │   │       │   │   │   ├── service/
│       │   │   │       │   │   │   │   └── DelayedAnimeTrackingUpdateJob.kt
│       │   │   │       │   │   │   └── store/
│       │   │   │       │   │   │       └── DelayedAnimeTrackingStore.kt
│       │   │   │       │   │   ├── manga/
│       │   │   │       │   │   │   ├── interactor/
│       │   │   │       │   │   │   │   ├── AddMangaTracks.kt
│       │   │   │       │   │   │   │   ├── RefreshMangaTracks.kt
│       │   │   │       │   │   │   │   ├── SyncChapterProgressWithTrack.kt
│       │   │   │       │   │   │   │   └── TrackChapter.kt
│       │   │   │       │   │   │   ├── model/
│       │   │   │       │   │   │   │   └── MangaTrack.kt
│       │   │   │       │   │   │   ├── service/
│       │   │   │       │   │   │   │   └── DelayedMangaTrackingUpdateJob.kt
│       │   │   │       │   │   │   └── store/
│       │   │   │       │   │   │       └── DelayedMangaTrackingStore.kt
│       │   │   │       │   │   ├── model/
│       │   │   │       │   │   │   └── AutoTrackState.kt
│       │   │   │       │   │   └── service/
│       │   │   │       │   │       └── TrackPreferences.kt
│       │   │   │       │   └── ui/
│       │   │   │       │       ├── UiPreferences.kt
│       │   │   │       │       └── model/
│       │   │   │       │           ├── AppTheme.kt
│       │   │   │       │           ├── NavStyle.kt
│       │   │   │       │           ├── StartScreen.kt
│       │   │   │       │           ├── TabletUiMode.kt
│       │   │   │       │           └── ThemeMode.kt
│       │   │   │       ├── presentation/
│       │   │   │       │   ├── browse/
│       │   │   │       │   │   ├── BaseBrowseItem.kt
│       │   │   │       │   │   ├── BrowseBadges.kt
│       │   │   │       │   │   ├── BrowseSourceDialogs.kt
│       │   │   │       │   │   ├── BrowseSourceLoadingItem.kt
│       │   │   │       │   │   ├── GlobalSearchResultItems.kt
│       │   │   │       │   │   ├── GlobalSerachCard.kt
│       │   │   │       │   │   ├── anime/
│       │   │   │       │   │   │   ├── AnimeExtensionDetailsScreen.kt
│       │   │   │       │   │   │   ├── AnimeExtensionFilterScreen.kt
│       │   │   │       │   │   │   ├── AnimeExtensionsScreen.kt
│       │   │   │       │   │   │   ├── AnimeSourcesFilterScreen.kt
│       │   │   │       │   │   │   ├── AnimeSourcesScreen.kt
│       │   │   │       │   │   │   ├── BrowseAnimeSourceScreen.kt
│       │   │   │       │   │   │   ├── GlobalAnimeSearchScreen.kt
│       │   │   │       │   │   │   ├── MigrateAnimeScreen.kt
│       │   │   │       │   │   │   ├── MigrateAnimeSearchScreen.kt
│       │   │   │       │   │   │   ├── MigrateAnimeSourceScreen.kt
│       │   │   │       │   │   │   └── components/
│       │   │   │       │   │   │       ├── BaseAnimeSourceItem.kt
│       │   │   │       │   │   │       ├── BrowseAnimeIcons.kt
│       │   │   │       │   │   │       ├── BrowseAnimeSourceComfortableGrid.kt
│       │   │   │       │   │   │       ├── BrowseAnimeSourceCompactGrid.kt
│       │   │   │       │   │   │       ├── BrowseAnimeSourceList.kt
│       │   │   │       │   │   │       ├── BrowseAnimeSourceToolbar.kt
│       │   │   │       │   │   │       ├── GlobalAnimeSearchCardRow.kt
│       │   │   │       │   │   │       └── GlobalAnimeSearchToolbar.kt
│       │   │   │       │   │   └── manga/
│       │   │   │       │   │       ├── BrowseMangaSourceScreen.kt
│       │   │   │       │   │       ├── GlobalMangaSearchScreen.kt
│       │   │   │       │   │       ├── MangaExtensionDetailsScreen.kt
│       │   │   │       │   │       ├── MangaExtensionFilterScreen.kt
│       │   │   │       │   │       ├── MangaExtensionsScreen.kt
│       │   │   │       │   │       ├── MangaSourcesFilterScreen.kt
│       │   │   │       │   │       ├── MangaSourcesScreen.kt
│       │   │   │       │   │       ├── MigrateMangaScreen.kt
│       │   │   │       │   │       ├── MigrateMangaSearchScreen.kt
│       │   │   │       │   │       ├── MigrateMangaSourceScreen.kt
│       │   │   │       │   │       └── components/
│       │   │   │       │   │           ├── BaseMangaSourceItem.kt
│       │   │   │       │   │           ├── BrowseMangaIcons.kt
│       │   │   │       │   │           ├── BrowseMangaSourceComfortableGrid.kt
│       │   │   │       │   │           ├── BrowseMangaSourceCompactGrid.kt
│       │   │   │       │   │           ├── BrowseMangaSourceList.kt
│       │   │   │       │   │           ├── BrowseMangaSourceToolbar.kt
│       │   │   │       │   │           ├── GlobalMangaSearchCardRow.kt
│       │   │   │       │   │           └── GlobalMangaSearchToolbar.kt
│       │   │   │       │   ├── category/
│       │   │   │       │   │   ├── AnimeCategoryScreen.kt
│       │   │   │       │   │   ├── CategoryExtensions.kt
│       │   │   │       │   │   ├── MangaCategoryScreen.kt
│       │   │   │       │   │   └── components/
│       │   │   │       │   │       ├── CategoryDialogs.kt
│       │   │   │       │   │       ├── CategoryFloatingActionButton.kt
│       │   │   │       │   │       └── CategoryListItem.kt
│       │   │   │       │   ├── components/
│       │   │   │       │   │   ├── AdaptiveSheet.kt
│       │   │   │       │   │   ├── AppBar.kt
│       │   │   │       │   │   ├── Banners.kt
│       │   │   │       │   │   ├── DateText.kt
│       │   │   │       │   │   ├── DropdownMenu.kt
│       │   │   │       │   │   ├── EmptyScreen.kt
│       │   │   │       │   │   ├── EntryDownloadDropdownMenu.kt
│       │   │   │       │   │   ├── FloatingActionAddButton.kt
│       │   │   │       │   │   ├── ItemDownloadIndicator.kt
│       │   │   │       │   │   ├── TabbedDialog.kt
│       │   │   │       │   │   └── TabbedScreen.kt
│       │   │   │       │   ├── crash/
│       │   │   │       │   │   └── CrashScreen.kt
│       │   │   │       │   ├── entries/
│       │   │   │       │   │   ├── EntryScreenConstants.kt
│       │   │   │       │   │   ├── anime/
│       │   │   │       │   │   │   ├── AnimeScreen.kt
│       │   │   │       │   │   │   ├── DuplicateAnimeDialog.kt
│       │   │   │       │   │   │   ├── EpisodeOptionsDialogScreen.kt
│       │   │   │       │   │   │   ├── EpisodeSettingsDialog.kt
│       │   │   │       │   │   │   ├── SeasonSettingsDialog.kt
│       │   │   │       │   │   │   └── components/
│       │   │   │       │   │   │       ├── AnimeEpisodeListItem.kt
│       │   │   │       │   │   │       ├── AnimeImagesDialog.kt
│       │   │   │       │   │   │       ├── AnimeInfoHeader.kt
│       │   │   │       │   │   │       ├── AnimeSeasonListItem.kt
│       │   │   │       │   │   │       ├── BaseAnimeListItem.kt
│       │   │   │       │   │   │       └── EpisodeDownloadIndicator.kt
│       │   │   │       │   │   ├── components/
│       │   │   │       │   │   │   ├── DotSeparatorText.kt
│       │   │   │       │   │   │   ├── EntryBottomActionMenu.kt
│       │   │   │       │   │   │   ├── EntryToolbar.kt
│       │   │   │       │   │   │   ├── ItemCover.kt
│       │   │   │       │   │   │   ├── ItemHeader.kt
│       │   │   │       │   │   │   ├── ItemsDialogs.kt
│       │   │   │       │   │   │   └── MissingItemCountListItem.kt
│       │   │   │       │   │   └── manga/
│       │   │   │       │   │       ├── ChapterSettingsDialog.kt
│       │   │   │       │   │       ├── DuplicateMangaDialog.kt
│       │   │   │       │   │       ├── MangaScreen.kt
│       │   │   │       │   │       └── components/
│       │   │   │       │   │           ├── BaseMangaListItem.kt
│       │   │   │       │   │           ├── ChapterDownloadIndicator.kt
│       │   │   │       │   │           ├── MangaChapterListItem.kt
│       │   │   │       │   │           ├── MangaCoverDialog.kt
│       │   │   │       │   │           ├── MangaInfoHeader.kt
│       │   │   │       │   │           └── ScanlatorFilterDialog.kt
│       │   │   │       │   ├── history/
│       │   │   │       │   │   ├── HistoryDialogs.kt
│       │   │   │       │   │   ├── anime/
│       │   │   │       │   │   │   ├── AnimeHistoryScreen.kt
│       │   │   │       │   │   │   ├── AnimeHistoryScreenModelStateProvider.kt
│       │   │   │       │   │   │   └── components/
│       │   │   │       │   │   │       ├── AnimeHistoryItem.kt
│       │   │   │       │   │   │       └── AnimeHistoryWithRelationsProvider.kt
│       │   │   │       │   │   └── manga/
│       │   │   │       │   │       ├── MangaHistoryScreen.kt
│       │   │   │       │   │       ├── MangaHistoryScreenModelStateProvider.kt
│       │   │   │       │   │       └── components/
│       │   │   │       │   │           ├── MangaHistoryItem.kt
│       │   │   │       │   │           └── MangaHistoryWithRelationsProvider.kt
│       │   │   │       │   ├── library/
│       │   │   │       │   │   ├── DeleteLibraryEntryDialog.kt
│       │   │   │       │   │   ├── anime/
│       │   │   │       │   │   │   ├── AnimeLibraryComfortableGrid.kt
│       │   │   │       │   │   │   ├── AnimeLibraryCompactGrid.kt
│       │   │   │       │   │   │   ├── AnimeLibraryContent.kt
│       │   │   │       │   │   │   ├── AnimeLibraryList.kt
│       │   │   │       │   │   │   ├── AnimeLibraryPager.kt
│       │   │   │       │   │   │   └── AnimeLibrarySettingsDialog.kt
│       │   │   │       │   │   ├── components/
│       │   │   │       │   │   │   ├── CommonEntryItem.kt
│       │   │   │       │   │   │   ├── GlobalSearchItem.kt
│       │   │   │       │   │   │   ├── LazyLibraryGrid.kt
│       │   │   │       │   │   │   ├── LibraryBadges.kt
│       │   │   │       │   │   │   ├── LibraryTabs.kt
│       │   │   │       │   │   │   └── LibraryToolbar.kt
│       │   │   │       │   │   └── manga/
│       │   │   │       │   │       ├── MangaLibraryComfortableGrid.kt
│       │   │   │       │   │       ├── MangaLibraryCompactGrid.kt
│       │   │   │       │   │       ├── MangaLibraryContent.kt
│       │   │   │       │   │       ├── MangaLibraryList.kt
│       │   │   │       │   │       ├── MangaLibraryPager.kt
│       │   │   │       │   │       └── MangaLibrarySettingsDialog.kt
│       │   │   │       │   ├── more/
│       │   │   │       │   │   ├── LogoHeader.kt
│       │   │   │       │   │   ├── MoreScreen.kt
│       │   │   │       │   │   ├── NewUpdateScreen.kt
│       │   │   │       │   │   ├── onboarding/
│       │   │   │       │   │   │   ├── GuidesStep.kt
│       │   │   │       │   │   │   ├── OnboardingScreen.kt
│       │   │   │       │   │   │   ├── OnboardingStep.kt
│       │   │   │       │   │   │   ├── PermissionStep.kt
│       │   │   │       │   │   │   ├── StorageStep.kt
│       │   │   │       │   │   │   └── ThemeStep.kt
│       │   │   │       │   │   ├── settings/
│       │   │   │       │   │   │   ├── Preference.kt
│       │   │   │       │   │   │   ├── PreferenceItem.kt
│       │   │   │       │   │   │   ├── PreferenceScaffold.kt
│       │   │   │       │   │   │   ├── PreferenceScreen.kt
│       │   │   │       │   │   │   ├── screen/
│       │   │   │       │   │   │   │   ├── Commons.kt
│       │   │   │       │   │   │   │   ├── SearchableSettings.kt
│       │   │   │       │   │   │   │   ├── SettingsAdvancedScreen.kt
│       │   │   │       │   │   │   │   ├── SettingsAppearanceScreen.kt
│       │   │   │       │   │   │   │   ├── SettingsBrowseScreen.kt
│       │   │   │       │   │   │   │   ├── SettingsDataScreen.kt
│       │   │   │       │   │   │   │   ├── SettingsDownloadScreen.kt
│       │   │   │       │   │   │   │   ├── SettingsLibraryScreen.kt
│       │   │   │       │   │   │   │   ├── SettingsMainScreen.kt
│       │   │   │       │   │   │   │   ├── SettingsReaderScreen.kt
│       │   │   │       │   │   │   │   ├── SettingsSearchScreen.kt
│       │   │   │       │   │   │   │   ├── SettingsSecurityScreen.kt
│       │   │   │       │   │   │   │   ├── SettingsTrackingScreen.kt
│       │   │   │       │   │   │   │   ├── about/
│       │   │   │       │   │   │   │   │   ├── AboutScreen.kt
│       │   │   │       │   │   │   │   │   ├── OpenSourceLibraryLicenseScreen.kt
│       │   │   │       │   │   │   │   │   └── OpenSourceLicensesScreen.kt
│       │   │   │       │   │   │   │   ├── advanced/
│       │   │   │       │   │   │   │   │   ├── ClearAnimeDatabaseScreen.kt
│       │   │   │       │   │   │   │   │   └── ClearDatabaseScreen.kt
│       │   │   │       │   │   │   │   ├── appearance/
│       │   │   │       │   │   │   │   │   └── AppLanguageScreen.kt
│       │   │   │       │   │   │   │   ├── browse/
│       │   │   │       │   │   │   │   │   ├── AnimeExtensionReposScreen.kt
│       │   │   │       │   │   │   │   │   ├── AnimeExtensionReposScreenModel.kt
│       │   │   │       │   │   │   │   │   ├── MangaExtensionReposScreen.kt
│       │   │   │       │   │   │   │   │   ├── MangaExtensionReposScreenModel.kt
│       │   │   │       │   │   │   │   │   └── components/
│       │   │   │       │   │   │   │   │       ├── ExtensionReposContent.kt
│       │   │   │       │   │   │   │   │       ├── ExtensionReposDialogs.kt
│       │   │   │       │   │   │   │   │       └── ExtensionReposScreen.kt
│       │   │   │       │   │   │   │   ├── data/
│       │   │   │       │   │   │   │   │   ├── CreateBackupScreen.kt
│       │   │   │       │   │   │   │   │   ├── RestoreBackupScreen.kt
│       │   │   │       │   │   │   │   │   └── StorageInfo.kt
│       │   │   │       │   │   │   │   ├── debug/
│       │   │   │       │   │   │   │   │   ├── BackupSchemaScreen.kt
│       │   │   │       │   │   │   │   │   ├── DebugInfoScreen.kt
│       │   │   │       │   │   │   │   │   └── WorkerInfoScreen.kt
│       │   │   │       │   │   │   │   └── player/
│       │   │   │       │   │   │   │       ├── PlayerSettingsAdvancedScreen.kt
│       │   │   │       │   │   │   │       ├── PlayerSettingsAudioScreen.kt
│       │   │   │       │   │   │   │       ├── PlayerSettingsDecoderScreen.kt
│       │   │   │       │   │   │   │       ├── PlayerSettingsGesturesScreen.kt
│       │   │   │       │   │   │   │       ├── PlayerSettingsMainScreen.kt
│       │   │   │       │   │   │   │       ├── PlayerSettingsPlayerScreen.kt
│       │   │   │       │   │   │   │       ├── PlayerSettingsSubtitleScreen.kt
│       │   │   │       │   │   │   │       ├── custombutton/
│       │   │   │       │   │   │   │       │   ├── PlayerSettingsCustomButtonScreen.kt
│       │   │   │       │   │   │   │       │   ├── PlayerSettingsCustomButtonScreenModel.kt
│       │   │   │       │   │   │   │       │   └── components/
│       │   │   │       │   │   │   │       │       ├── CustomButtonDialogs.kt
│       │   │   │       │   │   │   │       │       ├── CustomButtonListItem.kt
│       │   │   │       │   │   │   │       │       └── CustomButtonScreen.kt
│       │   │   │       │   │   │   │       └── editor/
│       │   │   │       │   │   │   │           ├── PlayerSettingsEditorScreen.kt
│       │   │   │       │   │   │   │           ├── PlayerSettingsEditorScreenModel.kt
│       │   │   │       │   │   │   │           ├── codeeditor/
│       │   │   │       │   │   │   │           │   ├── CodeEditScreen.kt
│       │   │   │       │   │   │   │           │   ├── CodeEditScreenModel.kt
│       │   │   │       │   │   │   │           │   ├── Highlight.kt
│       │   │   │       │   │   │   │           │   └── SyntaxHighlight.kt
│       │   │   │       │   │   │   │           └── components/
│       │   │   │       │   │   │   │               ├── EditorDialogs.kt
│       │   │   │       │   │   │   │               ├── EditorScreen.kt
│       │   │   │       │   │   │   │               └── EditorTypeDropdown.kt
│       │   │   │       │   │   │   └── widget/
│       │   │   │       │   │   │       ├── AppThemeModePreferenceWidget.kt
│       │   │   │       │   │   │       ├── AppThemePreferenceWidget.kt
│       │   │   │       │   │   │       ├── BasePreferenceWidget.kt
│       │   │   │       │   │   │       ├── EditTextPreferenceWidget.kt
│       │   │   │       │   │   │       ├── InfoWidget.kt
│       │   │   │       │   │   │       ├── ListPreferenceWidget.kt
│       │   │   │       │   │   │       ├── MultiSelectListPreferenceWidget.kt
│       │   │   │       │   │   │       ├── PreferenceGroupHeader.kt
│       │   │   │       │   │   │       ├── SwitchPreferenceWidget.kt
│       │   │   │       │   │   │       ├── TextPreferenceWidget.kt
│       │   │   │       │   │   │       ├── TrackingPreferenceWidget.kt
│       │   │   │       │   │   │       └── TriStateListDialog.kt
│       │   │   │       │   │   ├── stats/
│       │   │   │       │   │   │   ├── AnimeStatsScreenContent.kt
│       │   │   │       │   │   │   ├── MangaStatsScreenContent.kt
│       │   │   │       │   │   │   ├── StatsScreenState.kt
│       │   │   │       │   │   │   ├── components/
│       │   │   │       │   │   │   │   └── StatsItem.kt
│       │   │   │       │   │   │   └── data/
│       │   │   │       │   │   │       └── StatsData.kt
│       │   │   │       │   │   └── storage/
│       │   │   │       │   │       ├── CumulativeStorage.kt
│       │   │   │       │   │       ├── SelectStorageCategory.kt
│       │   │   │       │   │       ├── StorageItem.kt
│       │   │   │       │   │       ├── StorageScreenContent.kt
│       │   │   │       │   │       └── StorageScreenState.kt
│       │   │   │       │   ├── player/
│       │   │   │       │   │   └── components/
│       │   │   │       │   │       ├── ExpandableCard.kt
│       │   │   │       │   │       ├── ExposedTextDropDownMenu.kt
│       │   │   │       │   │       ├── OutlinedNumericChooser.kt
│       │   │   │       │   │       ├── OvalBox.kt
│       │   │   │       │   │       ├── PlayerSheet.kt
│       │   │   │       │   │       ├── RepeatingIconButton.kt
│       │   │   │       │   │       ├── SliderItem.kt
│       │   │   │       │   │       ├── SwitchPreference.kt
│       │   │   │       │   │       └── TintedSliderItem.kt
│       │   │   │       │   ├── reader/
│       │   │   │       │   │   ├── ChapterTransition.kt
│       │   │   │       │   │   ├── DisplayRefreshHost.kt
│       │   │   │       │   │   ├── OrientationSelectDialog.kt
│       │   │   │       │   │   ├── PageIndicatorText.kt
│       │   │   │       │   │   ├── ReaderContentOverlay.kt
│       │   │   │       │   │   ├── ReaderPageActionsDialog.kt
│       │   │   │       │   │   ├── ReadingModeSelectDialog.kt
│       │   │   │       │   │   ├── appbars/
│       │   │   │       │   │   │   ├── BottomReaderBar.kt
│       │   │   │       │   │   │   └── ReaderAppBars.kt
│       │   │   │       │   │   ├── components/
│       │   │   │       │   │   │   ├── ChapterNavigator.kt
│       │   │   │       │   │   │   └── ModeSelectionDialog.kt
│       │   │   │       │   │   └── settings/
│       │   │   │       │   │       ├── ColorFilterPage.kt
│       │   │   │       │   │       ├── GeneralSettingsPage.kt
│       │   │   │       │   │       ├── ReaderSettingsDialog.kt
│       │   │   │       │   │       └── ReadingModePage.kt
│       │   │   │       │   ├── theme/
│       │   │   │       │   │   ├── TachiyomiTheme.kt
│       │   │   │       │   │   └── colorscheme/
│       │   │   │       │   │       ├── BaseColorScheme.kt
│       │   │   │       │   │       ├── CloudflareColorScheme.kt
│       │   │   │       │   │       ├── CottoncandyColorScheme.kt
│       │   │   │       │   │       ├── DoomColorScheme.kt
│       │   │   │       │   │       ├── GreenAppleColorScheme.kt
│       │   │   │       │   │       ├── LavenderColorScheme.kt
│       │   │   │       │   │       ├── MatrixColorScheme.kt
│       │   │   │       │   │       ├── MidnightDuskColorScheme.kt
│       │   │   │       │   │       ├── MochaColorScheme.kt
│       │   │   │       │   │       ├── MonetColorScheme.kt
│       │   │   │       │   │       ├── MonochromeColorScheme.kt
│       │   │   │       │   │       ├── NordColorScheme.kt
│       │   │   │       │   │       ├── SapphireColorScheme.kt
│       │   │   │       │   │       ├── StrawberryColorScheme.kt
│       │   │   │       │   │       ├── TachiyomiColorScheme.kt
│       │   │   │       │   │       ├── TakoColorScheme.kt
│       │   │   │       │   │       ├── TealTurqoiseColorScheme.kt
│       │   │   │       │   │       ├── TidalWaveColorScheme.kt
│       │   │   │       │   │       ├── YinYangColorScheme.kt
│       │   │   │       │   │       └── YotsubaColorScheme.kt
│       │   │   │       │   ├── track/
│       │   │   │       │   │   ├── TrackInfoDialogSelector.kt
│       │   │   │       │   │   ├── anime/
│       │   │   │       │   │   │   ├── AnimeTrackInfoDialogHome.kt
│       │   │   │       │   │   │   ├── AnimeTrackInfoDialogHomePreviewProvider.kt
│       │   │   │       │   │   │   ├── AnimeTrackerSearch.kt
│       │   │   │       │   │   │   └── AnimeTrackerSearchPreviewProvider.kt
│       │   │   │       │   │   ├── components/
│       │   │   │       │   │   │   ├── TrackLogoIcon.kt
│       │   │   │       │   │   │   └── TrackLogoIconPreviewProvider.kt
│       │   │   │       │   │   └── manga/
│       │   │   │       │   │       ├── MangaTrackInfoDialogHome.kt
│       │   │   │       │   │       ├── MangaTrackInfoDialogHomePreviewProvider.kt
│       │   │   │       │   │       ├── MangaTrackerSearch.kt
│       │   │   │       │   │       └── MangaTrackerSearchPreviewProvider.kt
│       │   │   │       │   ├── updates/
│       │   │   │       │   │   ├── UpdatesDialog.kt
│       │   │   │       │   │   ├── anime/
│       │   │   │       │   │   │   ├── AnimeUpdatesScreen.kt
│       │   │   │       │   │   │   └── AnimeUpdatesUiItem.kt
│       │   │   │       │   │   └── manga/
│       │   │   │       │   │       ├── MangaUpdatesScreen.kt
│       │   │   │       │   │       └── MangaUpdatesUiItem.kt
│       │   │   │       │   ├── util/
│       │   │   │       │   │   ├── ExceptionFormatter.kt
│       │   │   │       │   │   ├── FastScrollAnimateItem.kt
│       │   │   │       │   │   ├── ItemNumberFormatter.kt
│       │   │   │       │   │   ├── Navigator.kt
│       │   │   │       │   │   ├── Permissions.kt
│       │   │   │       │   │   ├── Resources.kt
│       │   │   │       │   │   ├── TimeUtils.kt
│       │   │   │       │   │   └── WindowSize.kt
│       │   │   │       │   └── webview/
│       │   │   │       │       └── WebViewScreenContent.kt
│       │   │   │       ├── tachiyomi/
│       │   │   │       │   ├── App.kt
│       │   │   │       │   ├── AppInfo.kt
│       │   │   │       │   ├── crash/
│       │   │   │       │   │   ├── CrashActivity.kt
│       │   │   │       │   │   └── GlobalExceptionHandler.kt
│       │   │   │       │   ├── data/
│       │   │   │       │   │   ├── backup/
│       │   │   │       │   │   │   ├── BackupDecoder.kt
│       │   │   │       │   │   │   ├── BackupDetector.kt
│       │   │   │       │   │   │   ├── BackupFileValidator.kt
│       │   │   │       │   │   │   ├── BackupNotifier.kt
│       │   │   │       │   │   │   ├── create/
│       │   │   │       │   │   │   │   ├── BackupCreateJob.kt
│       │   │   │       │   │   │   │   ├── BackupCreator.kt
│       │   │   │       │   │   │   │   ├── BackupOptions.kt
│       │   │   │       │   │   │   │   └── creators/
│       │   │   │       │   │   │   │       ├── AnimeBackupCreator.kt
│       │   │   │       │   │   │   │       ├── AnimeCategoriesBackupCreator.kt
│       │   │   │       │   │   │   │       ├── AnimeExtensionRepoBackupCreator.kt
│       │   │   │       │   │   │   │       ├── AnimeSourcesBackupCreator.kt
│       │   │   │       │   │   │   │       ├── CustomButtonBackupCreator.kt
│       │   │   │       │   │   │   │       ├── ExtensionsBackupCreator.kt
│       │   │   │       │   │   │   │       ├── MangaBackupCreator.kt
│       │   │   │       │   │   │   │       ├── MangaCategoriesBackupCreator.kt
│       │   │   │       │   │   │   │       ├── MangaExtensionRepoBackupCreator.kt
│       │   │   │       │   │   │   │       ├── MangaSourcesBackupCreator.kt
│       │   │   │       │   │   │   │       └── PreferenceBackupCreator.kt
│       │   │   │       │   │   │   ├── full/
│       │   │   │       │   │   │   │   └── models/
│       │   │   │       │   │   │   │       ├── Backup.kt
│       │   │   │       │   │   │   │       └── BackupPreference.kt
│       │   │   │       │   │   │   ├── models/
│       │   │   │       │   │   │   │   ├── Backup.kt
│       │   │   │       │   │   │   │   ├── BackupAnime.kt
│       │   │   │       │   │   │   │   ├── BackupAnimeHistory.kt
│       │   │   │       │   │   │   │   ├── BackupAnimeSource.kt
│       │   │   │       │   │   │   │   ├── BackupAnimeTracking.kt
│       │   │   │       │   │   │   │   ├── BackupCategory.kt
│       │   │   │       │   │   │   │   ├── BackupChapter.kt
│       │   │   │       │   │   │   │   ├── BackupCustomButtons.kt
│       │   │   │       │   │   │   │   ├── BackupEpisode.kt
│       │   │   │       │   │   │   │   ├── BackupExtension.kt
│       │   │   │       │   │   │   │   ├── BackupExtensionPreferences.kt
│       │   │   │       │   │   │   │   ├── BackupExtensionRepos.kt
│       │   │   │       │   │   │   │   ├── BackupHistory.kt
│       │   │   │       │   │   │   │   ├── BackupManga.kt
│       │   │   │       │   │   │   │   ├── BackupPreference.kt
│       │   │   │       │   │   │   │   ├── BackupSource.kt
│       │   │   │       │   │   │   │   └── BackupTracking.kt
│       │   │   │       │   │   │   └── restore/
│       │   │   │       │   │   │       ├── BackupRestoreJob.kt
│       │   │   │       │   │   │       ├── BackupRestorer.kt
│       │   │   │       │   │   │       ├── RestoreOptions.kt
│       │   │   │       │   │   │       └── restorers/
│       │   │   │       │   │   │           ├── AnimeCategoriesRestorer.kt
│       │   │   │       │   │   │           ├── AnimeExtensionRepoRestorer.kt
│       │   │   │       │   │   │           ├── AnimeRestorer.kt
│       │   │   │       │   │   │           ├── CustomButtonRestorer.kt
│       │   │   │       │   │   │           ├── ExtensionsRestorer.kt
│       │   │   │       │   │   │           ├── MangaCategoriesRestorer.kt
│       │   │   │       │   │   │           ├── MangaExtensionRepoRestorer.kt
│       │   │   │       │   │   │           ├── MangaRestorer.kt
│       │   │   │       │   │   │           └── PreferenceRestorer.kt
│       │   │   │       │   │   ├── cache/
│       │   │   │       │   │   │   ├── AnimeBackgroundCache.kt
│       │   │   │       │   │   │   ├── AnimeCoverCache.kt
│       │   │   │       │   │   │   ├── ChapterCache.kt
│       │   │   │       │   │   │   └── MangaCoverCache.kt
│       │   │   │       │   │   ├── coil/
│       │   │   │       │   │   │   ├── AnimeCoverKeyer.kt
│       │   │   │       │   │   │   ├── AnimeImageFetcher.kt
│       │   │   │       │   │   │   ├── BufferedSourceFetcher.kt
│       │   │   │       │   │   │   ├── MangaCoverFetcher.kt
│       │   │   │       │   │   │   ├── MangaCoverKeyer.kt
│       │   │   │       │   │   │   ├── TachiyomiImageDecoder.kt
│       │   │   │       │   │   │   └── Utils.kt
│       │   │   │       │   │   ├── database/
│       │   │   │       │   │   │   └── models/
│       │   │   │       │   │   │       ├── anime/
│       │   │   │       │   │   │       │   ├── AnimeTrack.kt
│       │   │   │       │   │   │       │   ├── AnimeTrackImpl.kt
│       │   │   │       │   │   │       │   ├── Episode.kt
│       │   │   │       │   │   │       │   └── EpisodeImpl.kt
│       │   │   │       │   │   │       └── manga/
│       │   │   │       │   │   │           ├── Chapter.kt
│       │   │   │       │   │   │           ├── ChapterImpl.kt
│       │   │   │       │   │   │           ├── MangaTrack.kt
│       │   │   │       │   │   │           └── MangaTrackImpl.kt
│       │   │   │       │   │   ├── download/
│       │   │   │       │   │   │   ├── anime/
│       │   │   │       │   │   │   │   ├── AnimeDownloadCache.kt
│       │   │   │       │   │   │   │   ├── AnimeDownloadJob.kt
│       │   │   │       │   │   │   │   ├── AnimeDownloadManager.kt
│       │   │   │       │   │   │   │   ├── AnimeDownloadNotifier.kt
│       │   │   │       │   │   │   │   ├── AnimeDownloadPendingDeleter.kt
│       │   │   │       │   │   │   │   ├── AnimeDownloadProvider.kt
│       │   │   │       │   │   │   │   ├── AnimeDownloadStore.kt
│       │   │   │       │   │   │   │   ├── AnimeDownloader.kt
│       │   │   │       │   │   │   │   └── model/
│       │   │   │       │   │   │   │       ├── AnimeDownload.kt
│       │   │   │       │   │   │   │       └── AnimeDownloadPart.kt
│       │   │   │       │   │   │   └── manga/
│       │   │   │       │   │   │       ├── MangaDownloadCache.kt
│       │   │   │       │   │   │       ├── MangaDownloadJob.kt
│       │   │   │       │   │   │       ├── MangaDownloadManager.kt
│       │   │   │       │   │   │       ├── MangaDownloadNotifier.kt
│       │   │   │       │   │   │       ├── MangaDownloadPendingDeleter.kt
│       │   │   │       │   │   │       ├── MangaDownloadProvider.kt
│       │   │   │       │   │   │       ├── MangaDownloadStore.kt
│       │   │   │       │   │   │       ├── MangaDownloader.kt
│       │   │   │       │   │   │       └── model/
│       │   │   │       │   │   │           └── MangaDownload.kt
│       │   │   │       │   │   ├── export/
│       │   │   │       │   │   │   └── LibraryExporter.kt
│       │   │   │       │   │   ├── library/
│       │   │   │       │   │   │   ├── anime/
│       │   │   │       │   │   │   │   ├── AnimeLibraryUpdateJob.kt
│       │   │   │       │   │   │   │   ├── AnimeLibraryUpdateNotifier.kt
│       │   │   │       │   │   │   │   └── AnimeMetadataUpdateJob.kt
│       │   │   │       │   │   │   └── manga/
│       │   │   │       │   │   │       ├── MangaLibraryUpdateJob.kt
│       │   │   │       │   │   │       ├── MangaLibraryUpdateNotifier.kt
│       │   │   │       │   │   │       └── MangaMetadataUpdateJob.kt
│       │   │   │       │   │   ├── notification/
│       │   │   │       │   │   │   ├── NotificationHandler.kt
│       │   │   │       │   │   │   ├── NotificationReceiver.kt
│       │   │   │       │   │   │   └── Notifications.kt
│       │   │   │       │   │   ├── preference/
│       │   │   │       │   │   │   └── SharedPreferencesDataStore.kt
│       │   │   │       │   │   ├── saver/
│       │   │   │       │   │   │   └── ImageSaver.kt
│       │   │   │       │   │   ├── track/
│       │   │   │       │   │   │   ├── AnimeTracker.kt
│       │   │   │       │   │   │   ├── BaseTracker.kt
│       │   │   │       │   │   │   ├── DeletableAnimeTracker.kt
│       │   │   │       │   │   │   ├── DeletableMangaTracker.kt
│       │   │   │       │   │   │   ├── EnhancedAnimeTracker.kt
│       │   │   │       │   │   │   ├── EnhancedMangaTracker.kt
│       │   │   │       │   │   │   ├── MangaTracker.kt
│       │   │   │       │   │   │   ├── Tracker.kt
│       │   │   │       │   │   │   ├── TrackerManager.kt
│       │   │   │       │   │   │   ├── anilist/
│       │   │   │       │   │   │   │   ├── Anilist.kt
│       │   │   │       │   │   │   │   ├── AnilistApi.kt
│       │   │   │       │   │   │   │   ├── AnilistInterceptor.kt
│       │   │   │       │   │   │   │   ├── AnilistUtils.kt
│       │   │   │       │   │   │   │   └── dto/
│       │   │   │       │   │   │   │       ├── ALAddEntry.kt
│       │   │   │       │   │   │   │       ├── ALAnime.kt
│       │   │   │       │   │   │   │       ├── ALFuzzyDate.kt
│       │   │   │       │   │   │   │       ├── ALManga.kt
│       │   │   │       │   │   │   │       ├── ALOAuth.kt
│       │   │   │       │   │   │   │       ├── ALSearch.kt
│       │   │   │       │   │   │   │       ├── ALSearchItem.kt
│       │   │   │       │   │   │   │       ├── ALUser.kt
│       │   │   │       │   │   │   │       └── ALUserList.kt
│       │   │   │       │   │   │   ├── bangumi/
│       │   │   │       │   │   │   │   ├── Bangumi.kt
│       │   │   │       │   │   │   │   ├── BangumiApi.kt
│       │   │   │       │   │   │   │   ├── BangumiInterceptor.kt
│       │   │   │       │   │   │   │   ├── BangumiUtils.kt
│       │   │   │       │   │   │   │   └── dto/
│       │   │   │       │   │   │   │       ├── BGMCollectionResponse.kt
│       │   │   │       │   │   │   │       ├── BGMOAuth.kt
│       │   │   │       │   │   │   │       ├── BGMSearch.kt
│       │   │   │       │   │   │   │       └── BGMUser.kt
│       │   │   │       │   │   │   ├── jellyfin/
│       │   │   │       │   │   │   │   ├── Jellyfin.kt
│       │   │   │       │   │   │   │   ├── JellyfinApi.kt
│       │   │   │       │   │   │   │   ├── JellyfinInterceptor.kt
│       │   │   │       │   │   │   │   └── dto/
│       │   │   │       │   │   │   │       └── JFItem.kt
│       │   │   │       │   │   │   ├── kavita/
│       │   │   │       │   │   │   │   ├── Kavita.kt
│       │   │   │       │   │   │   │   ├── KavitaApi.kt
│       │   │   │       │   │   │   │   ├── KavitaInterceptor.kt
│       │   │   │       │   │   │   │   └── KavitaModels.kt
│       │   │   │       │   │   │   ├── kitsu/
│       │   │   │       │   │   │   │   ├── Kitsu.kt
│       │   │   │       │   │   │   │   ├── KitsuApi.kt
│       │   │   │       │   │   │   │   ├── KitsuDateHelper.kt
│       │   │   │       │   │   │   │   ├── KitsuInterceptor.kt
│       │   │   │       │   │   │   │   ├── KitsuUtils.kt
│       │   │   │       │   │   │   │   └── dto/
│       │   │   │       │   │   │   │       ├── KitsuAddEntry.kt
│       │   │   │       │   │   │   │       ├── KitsuListSearch.kt
│       │   │   │       │   │   │   │       ├── KitsuOAuth.kt
│       │   │   │       │   │   │   │       ├── KitsuSearch.kt
│       │   │   │       │   │   │   │       ├── KitsuSearchItemCover.kt
│       │   │   │       │   │   │   │       └── KitsuUser.kt
│       │   │   │       │   │   │   ├── komga/
│       │   │   │       │   │   │   │   ├── Komga.kt
│       │   │   │       │   │   │   │   ├── KomgaApi.kt
│       │   │   │       │   │   │   │   └── KomgaModels.kt
│       │   │   │       │   │   │   ├── mangaupdates/
│       │   │   │       │   │   │   │   ├── MangaUpdates.kt
│       │   │   │       │   │   │   │   ├── MangaUpdatesApi.kt
│       │   │   │       │   │   │   │   ├── MangaUpdatesInterceptor.kt
│       │   │   │       │   │   │   │   └── dto/
│       │   │   │       │   │   │   │       ├── MUContext.kt
│       │   │   │       │   │   │   │       ├── MUImage.kt
│       │   │   │       │   │   │   │       ├── MUListItem.kt
│       │   │   │       │   │   │   │       ├── MULoginResponse.kt
│       │   │   │       │   │   │   │       ├── MURating.kt
│       │   │   │       │   │   │   │       ├── MURecord.kt
│       │   │   │       │   │   │   │       ├── MUSearch.kt
│       │   │   │       │   │   │   │       ├── MUSeries.kt
│       │   │   │       │   │   │   │       ├── MUStatus.kt
│       │   │   │       │   │   │   │       └── MUUrl.kt
│       │   │   │       │   │   │   ├── model/
│       │   │   │       │   │   │   │   ├── AnimeTrackSearch.kt
│       │   │   │       │   │   │   │   └── MangaTrackSearch.kt
│       │   │   │       │   │   │   ├── myanimelist/
│       │   │   │       │   │   │   │   ├── MyAnimeList.kt
│       │   │   │       │   │   │   │   ├── MyAnimeListApi.kt
│       │   │   │       │   │   │   │   ├── MyAnimeListInterceptor.kt
│       │   │   │       │   │   │   │   ├── MyAnimeListUtils.kt
│       │   │   │       │   │   │   │   └── dto/
│       │   │   │       │   │   │   │       ├── MALAnime.kt
│       │   │   │       │   │   │   │       ├── MALList.kt
│       │   │   │       │   │   │   │       ├── MALManga.kt
│       │   │   │       │   │   │   │       ├── MALOAuth.kt
│       │   │   │       │   │   │   │       ├── MALSearch.kt
│       │   │   │       │   │   │   │       ├── MALUser.kt
│       │   │   │       │   │   │   │       └── MALUserListSearch.kt
│       │   │   │       │   │   │   ├── shikimori/
│       │   │   │       │   │   │   │   ├── Shikimori.kt
│       │   │   │       │   │   │   │   ├── ShikimoriApi.kt
│       │   │   │       │   │   │   │   ├── ShikimoriInterceptor.kt
│       │   │   │       │   │   │   │   ├── ShikimoriUtils.kt
│       │   │   │       │   │   │   │   └── dto/
│       │   │   │       │   │   │   │       ├── SMAddEntryResponse.kt
│       │   │   │       │   │   │   │       ├── SMEntry.kt
│       │   │   │       │   │   │   │       ├── SMOAuth.kt
│       │   │   │       │   │   │   │       ├── SMUser.kt
│       │   │   │       │   │   │   │       └── SMUserListEntry.kt
│       │   │   │       │   │   │   ├── simkl/
│       │   │   │       │   │   │   │   ├── Simkl.kt
│       │   │   │       │   │   │   │   ├── SimklApi.kt
│       │   │   │       │   │   │   │   ├── SimklInterceptor.kt
│       │   │   │       │   │   │   │   ├── SimklUtils.kt
│       │   │   │       │   │   │   │   └── dto/
│       │   │   │       │   │   │   │       ├── SimklOAuth.kt
│       │   │   │       │   │   │   │       ├── SimklSearch.kt
│       │   │   │       │   │   │   │       ├── SimklSyncItem.kt
│       │   │   │       │   │   │   │       ├── SimklSyncWatched.kt
│       │   │   │       │   │   │   │       └── SimklUser.kt
│       │   │   │       │   │   │   └── suwayomi/
│       │   │   │       │   │   │       ├── Suwayomi.kt
│       │   │   │       │   │   │       ├── SuwayomiApi.kt
│       │   │   │       │   │   │       └── SuwayomiModels.kt
│       │   │   │       │   │   └── updater/
│       │   │   │       │   │       ├── AppUpdateChecker.kt
│       │   │   │       │   │       ├── AppUpdateDownloadJob.kt
│       │   │   │       │   │       └── AppUpdateNotifier.kt
│       │   │   │       │   ├── di/
│       │   │   │       │   │   ├── AppModule.kt
│       │   │   │       │   │   └── PreferenceModule.kt
│       │   │   │       │   ├── extension/
│       │   │   │       │   │   ├── ExtensionUpdateNotifier.kt
│       │   │   │       │   │   ├── InstallStep.kt
│       │   │   │       │   │   ├── anime/
│       │   │   │       │   │   │   ├── AnimeExtensionManager.kt
│       │   │   │       │   │   │   ├── api/
│       │   │   │       │   │   │   │   └── AnimeExtensionApi.kt
│       │   │   │       │   │   │   ├── installer/
│       │   │   │       │   │   │   │   ├── InstallerAnime.kt
│       │   │   │       │   │   │   │   ├── PackageInstallerInstallerAnime.kt
│       │   │   │       │   │   │   │   └── ShizukuInstallerAnime.kt
│       │   │   │       │   │   │   ├── model/
│       │   │   │       │   │   │   │   ├── AnimeExtension.kt
│       │   │   │       │   │   │   │   └── AnimeLoadResult.kt
│       │   │   │       │   │   │   └── util/
│       │   │   │       │   │   │       ├── AnimeExtensionInstallActivity.kt
│       │   │   │       │   │   │       ├── AnimeExtensionInstallReceiver.kt
│       │   │   │       │   │   │       ├── AnimeExtensionInstallService.kt
│       │   │   │       │   │   │       ├── AnimeExtensionInstaller.kt
│       │   │   │       │   │   │       └── AnimeExtensionLoader.kt
│       │   │   │       │   │   └── manga/
│       │   │   │       │   │       ├── MangaExtensionManager.kt
│       │   │   │       │   │       ├── api/
│       │   │   │       │   │       │   └── MangaExtensionApi.kt
│       │   │   │       │   │       ├── installer/
│       │   │   │       │   │       │   ├── InstallerManga.kt
│       │   │   │       │   │       │   ├── PackageInstallerInstallerManga.kt
│       │   │   │       │   │       │   └── ShizukuInstallerManga.kt
│       │   │   │       │   │       ├── model/
│       │   │   │       │   │       │   ├── MangaExtension.kt
│       │   │   │       │   │       │   └── MangaLoadResult.kt
│       │   │   │       │   │       └── util/
│       │   │   │       │   │           ├── MangaExtensionInstallActivity.kt
│       │   │   │       │   │           ├── MangaExtensionInstallReceiver.kt
│       │   │   │       │   │           ├── MangaExtensionInstallService.kt
│       │   │   │       │   │           ├── MangaExtensionInstaller.kt
│       │   │   │       │   │           └── MangaExtensionLoader.kt
│       │   │   │       │   ├── source/
│       │   │   │       │   │   ├── anime/
│       │   │   │       │   │   │   ├── AndroidAnimeSourceManager.kt
│       │   │   │       │   │   │   └── AnimeSourceExtensions.kt
│       │   │   │       │   │   └── manga/
│       │   │   │       │   │       ├── AndroidMangaSourceManager.kt
│       │   │   │       │   │       └── MangaSourceExtensions.kt
│       │   │   │       │   ├── ui/
│       │   │   │       │   │   ├── base/
│       │   │   │       │   │   │   ├── activity/
│       │   │   │       │   │   │   │   └── BaseActivity.kt
│       │   │   │       │   │   │   └── delegate/
│       │   │   │       │   │   │       ├── SecureActivityDelegate.kt
│       │   │   │       │   │   │       └── ThemingDelegate.kt
│       │   │   │       │   │   ├── browse/
│       │   │   │       │   │   │   ├── BrowseTab.kt
│       │   │   │       │   │   │   ├── anime/
│       │   │   │       │   │   │   │   ├── extension/
│       │   │   │       │   │   │   │   │   ├── AnimeExtensionFilterScreen.kt
│       │   │   │       │   │   │   │   │   ├── AnimeExtensionFilterScreenModel.kt
│       │   │   │       │   │   │   │   │   ├── AnimeExtensionsScreenModel.kt
│       │   │   │       │   │   │   │   │   ├── AnimeExtensionsTab.kt
│       │   │   │       │   │   │   │   │   └── details/
│       │   │   │       │   │   │   │   │       ├── AnimeExtensionDetailsScreen.kt
│       │   │   │       │   │   │   │   │       ├── AnimeExtensionDetailsScreenModel.kt
│       │   │   │       │   │   │   │   │       └── AnimeSourcePreferencesScreen.kt
│       │   │   │       │   │   │   │   ├── migration/
│       │   │   │       │   │   │   │   │   ├── AnimeMigrationFlags.kt
│       │   │   │       │   │   │   │   │   ├── anime/
│       │   │   │       │   │   │   │   │   │   ├── MigrateAnimeScreen.kt
│       │   │   │       │   │   │   │   │   │   ├── MigrateAnimeScreenModel.kt
│       │   │   │       │   │   │   │   │   │   └── season/
│       │   │   │       │   │   │   │   │   │       ├── MigrateSeasonSelectScreen.kt
│       │   │   │       │   │   │   │   │   │       └── MigrateSeasonSelectScreenModel.kt
│       │   │   │       │   │   │   │   │   ├── search/
│       │   │   │       │   │   │   │   │   │   ├── AnimeMigrateSearchScreenDialogScreenModel.kt
│       │   │   │       │   │   │   │   │   │   ├── AnimeSourceSearchScreen.kt
│       │   │   │       │   │   │   │   │   │   ├── MigrateAnimeDialog.kt
│       │   │   │       │   │   │   │   │   │   ├── MigrateAnimeSearchScreen.kt
│       │   │   │       │   │   │   │   │   │   └── MigrateAnimeSearchScreenModel.kt
│       │   │   │       │   │   │   │   │   └── sources/
│       │   │   │       │   │   │   │   │       ├── MigrateAnimeSourceScreenModel.kt
│       │   │   │       │   │   │   │   │       └── MigrateAnimeSourceTab.kt
│       │   │   │       │   │   │   │   └── source/
│       │   │   │       │   │   │   │       ├── AnimeSourcesFilterScreen.kt
│       │   │   │       │   │   │   │       ├── AnimeSourcesFilterScreenModel.kt
│       │   │   │       │   │   │   │       ├── AnimeSourcesScreenModel.kt
│       │   │   │       │   │   │   │       ├── AnimeSourcesTab.kt
│       │   │   │       │   │   │   │       ├── browse/
│       │   │   │       │   │   │   │       │   ├── BrowseAnimeSourceScreen.kt
│       │   │   │       │   │   │   │       │   ├── BrowseAnimeSourceScreenModel.kt
│       │   │   │       │   │   │   │       │   └── SourceFilterAnimeDialog.kt
│       │   │   │       │   │   │   │       └── globalsearch/
│       │   │   │       │   │   │   │           ├── AnimeSearchScreenModel.kt
│       │   │   │       │   │   │   │           ├── GlobalAnimeSearchScreen.kt
│       │   │   │       │   │   │   │           └── GlobalAnimeSearchScreenModel.kt
│       │   │   │       │   │   │   └── manga/
│       │   │   │       │   │   │       ├── extension/
│       │   │   │       │   │   │       │   ├── MangaExtensionFilterScreen.kt
│       │   │   │       │   │   │       │   ├── MangaExtensionFilterScreenModel.kt
│       │   │   │       │   │   │       │   ├── MangaExtensionsScreenModel.kt
│       │   │   │       │   │   │       │   ├── MangaExtensionsTab.kt
│       │   │   │       │   │   │       │   └── details/
│       │   │   │       │   │   │       │       ├── MangaExtensionDetailsScreen.kt
│       │   │   │       │   │   │       │       ├── MangaExtensionDetailsScreenModel.kt
│       │   │   │       │   │   │       │       └── MangaSourcePreferencesScreen.kt
│       │   │   │       │   │   │       ├── migration/
│       │   │   │       │   │   │       │   ├── MangaMigrationFlags.kt
│       │   │   │       │   │   │       │   ├── manga/
│       │   │   │       │   │   │       │   │   ├── MigrateMangaScreen.kt
│       │   │   │       │   │   │       │   │   └── MigrateMangaScreenModel.kt
│       │   │   │       │   │   │       │   ├── search/
│       │   │   │       │   │   │       │   │   ├── MangaMigrateSearchScreenDialogScreenModel.kt
│       │   │   │       │   │   │       │   │   ├── MangaSourceSearchScreen.kt
│       │   │   │       │   │   │       │   │   ├── MigrateMangaDialog.kt
│       │   │   │       │   │   │       │   │   ├── MigrateMangaSearchScreen.kt
│       │   │   │       │   │   │       │   │   └── MigrateMangaSearchScreenModel.kt
│       │   │   │       │   │   │       │   └── sources/
│       │   │   │       │   │   │       │       ├── MigrateMangaSourceScreenModel.kt
│       │   │   │       │   │   │       │       └── MigrateMangaSourceTab.kt
│       │   │   │       │   │   │       └── source/
│       │   │   │       │   │   │           ├── MangaSourcesFilterScreen.kt
│       │   │   │       │   │   │           ├── MangaSourcesFilterScreenModel.kt
│       │   │   │       │   │   │           ├── MangaSourcesScreenModel.kt
│       │   │   │       │   │   │           ├── MangaSourcesTab.kt
│       │   │   │       │   │   │           ├── browse/
│       │   │   │       │   │   │           │   ├── BrowseMangaSourceScreen.kt
│       │   │   │       │   │   │           │   ├── BrowseMangaSourceScreenModel.kt
│       │   │   │       │   │   │           │   └── SourceFilterMangaDialog.kt
│       │   │   │       │   │   │           └── globalsearch/
│       │   │   │       │   │   │               ├── GlobalMangaSearchScreen.kt
│       │   │   │       │   │   │               ├── GlobalMangaSearchScreenModel.kt
│       │   │   │       │   │   │               └── MangaSearchScreenModel.kt
│       │   │   │       │   │   ├── category/
│       │   │   │       │   │   │   ├── CategoriesTab.kt
│       │   │   │       │   │   │   ├── anime/
│       │   │   │       │   │   │   │   ├── AnimeCategoryScreenModel.kt
│       │   │   │       │   │   │   │   └── AnimeCategoryTab.kt
│       │   │   │       │   │   │   └── manga/
│       │   │   │       │   │   │       ├── MangaCategoryScreenModel.kt
│       │   │   │       │   │   │       └── MangaCategoryTab.kt
│       │   │   │       │   │   ├── deeplink/
│       │   │   │       │   │   │   ├── DeepLinkScreenType.kt
│       │   │   │       │   │   │   ├── anime/
│       │   │   │       │   │   │   │   ├── DeepLinkAnimeActivity.kt
│       │   │   │       │   │   │   │   ├── DeepLinkAnimeScreen.kt
│       │   │   │       │   │   │   │   └── DeepLinkAnimeScreenModel.kt
│       │   │   │       │   │   │   └── manga/
│       │   │   │       │   │   │       ├── DeepLinkMangaActivity.kt
│       │   │   │       │   │   │       ├── DeepLinkMangaScreen.kt
│       │   │   │       │   │   │       └── DeepLinkMangaScreenModel.kt
│       │   │   │       │   │   ├── download/
│       │   │   │       │   │   │   ├── DownloadsTab.kt
│       │   │   │       │   │   │   ├── anime/
│       │   │   │       │   │   │   │   ├── AnimeDownloadAdapter.kt
│       │   │   │       │   │   │   │   ├── AnimeDownloadHeaderHolder.kt
│       │   │   │       │   │   │   │   ├── AnimeDownloadHeaderItem.kt
│       │   │   │       │   │   │   │   ├── AnimeDownloadHolder.kt
│       │   │   │       │   │   │   │   ├── AnimeDownloadItem.kt
│       │   │   │       │   │   │   │   ├── AnimeDownloadQueueScreen.kt
│       │   │   │       │   │   │   │   ├── AnimeDownloadQueueScreenModel.kt
│       │   │   │       │   │   │   │   └── AnimeDownloadQueueTab.kt
│       │   │   │       │   │   │   └── manga/
│       │   │   │       │   │   │       ├── MangaDownloadAdapter.kt
│       │   │   │       │   │   │       ├── MangaDownloadHeaderHolder.kt
│       │   │   │       │   │   │       ├── MangaDownloadHeaderItem.kt
│       │   │   │       │   │   │       ├── MangaDownloadHolder.kt
│       │   │   │       │   │   │       ├── MangaDownloadItem.kt
│       │   │   │       │   │   │       ├── MangaDownloadQueueScreen.kt
│       │   │   │       │   │   │       ├── MangaDownloadQueueScreenModel.kt
│       │   │   │       │   │   │       └── MangaDownloadQueueTab.kt
│       │   │   │       │   │   ├── entries/
│       │   │   │       │   │   │   ├── anime/
│       │   │   │       │   │   │   │   ├── AnimeImageScreenModel.kt
│       │   │   │       │   │   │   │   ├── AnimeScreen.kt
│       │   │   │       │   │   │   │   ├── AnimeScreenModel.kt
│       │   │   │       │   │   │   │   ├── AnimeSeasonItem.kt
│       │   │   │       │   │   │   │   └── track/
│       │   │   │       │   │   │   │       ├── AnimeTrackInfoDialog.kt
│       │   │   │       │   │   │   │       └── AnimeTrackItem.kt
│       │   │   │       │   │   │   └── manga/
│       │   │   │       │   │   │       ├── MangaCoverScreenModel.kt
│       │   │   │       │   │   │       ├── MangaScreen.kt
│       │   │   │       │   │   │       ├── MangaScreenModel.kt
│       │   │   │       │   │   │       └── track/
│       │   │   │       │   │   │           ├── MangaTrackInfoDialog.kt
│       │   │   │       │   │   │           └── MangaTrackItem.kt
│       │   │   │       │   │   ├── history/
│       │   │   │       │   │   │   ├── HistoriesTab.kt
│       │   │   │       │   │   │   ├── anime/
│       │   │   │       │   │   │   │   ├── AnimeHistoryScreenModel.kt
│       │   │   │       │   │   │   │   └── AnimeHistoryTab.kt
│       │   │   │       │   │   │   └── manga/
│       │   │   │       │   │   │       ├── MangaHistoryScreenModel.kt
│       │   │   │       │   │   │       └── MangaHistoryTab.kt
│       │   │   │       │   │   ├── home/
│       │   │   │       │   │   │   └── HomeScreen.kt
│       │   │   │       │   │   ├── library/
│       │   │   │       │   │   │   ├── anime/
│       │   │   │       │   │   │   │   ├── AnimeLibraryItem.kt
│       │   │   │       │   │   │   │   ├── AnimeLibraryScreenModel.kt
│       │   │   │       │   │   │   │   ├── AnimeLibrarySettingsScreenModel.kt
│       │   │   │       │   │   │   │   └── AnimeLibraryTab.kt
│       │   │   │       │   │   │   └── manga/
│       │   │   │       │   │   │       ├── MangaLibraryItem.kt
│       │   │   │       │   │   │       ├── MangaLibraryScreenModel.kt
│       │   │   │       │   │   │       ├── MangaLibrarySettingsScreenModel.kt
│       │   │   │       │   │   │       └── MangaLibraryTab.kt
│       │   │   │       │   │   ├── main/
│       │   │   │       │   │   │   └── MainActivity.kt
│       │   │   │       │   │   ├── more/
│       │   │   │       │   │   │   ├── MoreTab.kt
│       │   │   │       │   │   │   ├── NewUpdateScreen.kt
│       │   │   │       │   │   │   └── OnboardingScreen.kt
│       │   │   │       │   │   ├── player/
│       │   │   │       │   │   │   ├── AniyomiMPVView.kt
│       │   │   │       │   │   │   ├── ExternalIntents.kt
│       │   │   │       │   │   │   ├── PipActions.kt
│       │   │   │       │   │   │   ├── PlayerActivity.kt
│       │   │   │       │   │   │   ├── PlayerEnums.kt
│       │   │   │       │   │   │   ├── PlayerObserver.kt
│       │   │   │       │   │   │   ├── PlayerUtils.kt
│       │   │   │       │   │   │   ├── PlayerViewModel.kt
│       │   │   │       │   │   │   ├── controls/
│       │   │   │       │   │   │   │   ├── BottomLeftPlayerControls.kt
│       │   │   │       │   │   │   │   ├── BottomRightPlayerControls.kt
│       │   │   │       │   │   │   │   ├── GestureHandler.kt
│       │   │   │       │   │   │   │   ├── MiddlePlayerControls.kt
│       │   │   │       │   │   │   │   ├── PlayerControls.kt
│       │   │   │       │   │   │   │   ├── PlayerDialogs.kt
│       │   │   │       │   │   │   │   ├── PlayerPanels.kt
│       │   │   │       │   │   │   │   ├── PlayerSheets.kt
│       │   │   │       │   │   │   │   ├── TopLeftPlayerControls.kt
│       │   │   │       │   │   │   │   ├── TopRightPlayerControls.kt
│       │   │   │       │   │   │   │   └── components/
│       │   │   │       │   │   │   │       ├── AutoPlaySwitch.kt
│       │   │   │       │   │   │   │       ├── BrightnessOverlay.kt
│       │   │   │       │   │   │   │       ├── ControlsButton.kt
│       │   │   │       │   │   │   │       ├── CurrentChapter.kt
│       │   │   │       │   │   │   │       ├── DoubleTapSeekTriangles.kt
│       │   │   │       │   │   │   │       ├── PlayerUpdates.kt
│       │   │   │       │   │   │   │       ├── SeekBar.kt
│       │   │   │       │   │   │   │       ├── VerticalSliders.kt
│       │   │   │       │   │   │   │       ├── dialogs/
│       │   │   │       │   │   │   │       │   ├── EpisodeListDialog.kt
│       │   │   │       │   │   │   │       │   ├── IntegerPickerDialog.kt
│       │   │   │       │   │   │   │       │   └── PlayerDialog.kt
│       │   │   │       │   │   │   │       ├── panels/
│       │   │   │       │   │   │   │       │   ├── AudioDelayPanel.kt
│       │   │   │       │   │   │   │       │   ├── SubtitleDelayPanel.kt
│       │   │   │       │   │   │   │       │   ├── SubtitleSettingsColorsCard.kt
│       │   │   │       │   │   │   │       │   ├── SubtitleSettingsMiscellaneousCard.kt
│       │   │   │       │   │   │   │       │   ├── SubtitleSettingsPanel.kt
│       │   │   │       │   │   │   │       │   ├── SubtitleSettingsTypographyCard.kt
│       │   │   │       │   │   │   │       │   └── VideoFiltersPanel.kt
│       │   │   │       │   │   │   │       └── sheets/
│       │   │   │       │   │   │   │           ├── AudioTracksSheet.kt
│       │   │   │       │   │   │   │           ├── ChaptersSheet.kt
│       │   │   │       │   │   │   │           ├── GenericTracksSheet.kt
│       │   │   │       │   │   │   │           ├── MoreSheet.kt
│       │   │   │       │   │   │   │           ├── PlaybackSpeedSheet.kt
│       │   │   │       │   │   │   │           ├── QualitySheet.kt
│       │   │   │       │   │   │   │           ├── ScreenshotSheet.kt
│       │   │   │       │   │   │   │           └── SubtitleTracksSheet.kt
│       │   │   │       │   │   │   ├── loader/
│       │   │   │       │   │   │   │   ├── EpisodeLoader.kt
│       │   │   │       │   │   │   │   └── HosterLoader.kt
│       │   │   │       │   │   │   ├── settings/
│       │   │   │       │   │   │   │   ├── AdvancedPlayerPreferences.kt
│       │   │   │       │   │   │   │   ├── AudioPreferences.kt
│       │   │   │       │   │   │   │   ├── DecoderPreferences.kt
│       │   │   │       │   │   │   │   ├── GesturePreferences.kt
│       │   │   │       │   │   │   │   ├── PlayerPreferences.kt
│       │   │   │       │   │   │   │   └── SubtitlePreferences.kt
│       │   │   │       │   │   │   └── utils/
│       │   │   │       │   │   │       ├── AniSkipApi.kt
│       │   │   │       │   │   │       ├── ChapterUtils.kt
│       │   │   │       │   │   │       └── TrackSelect.kt
│       │   │   │       │   │   ├── reader/
│       │   │   │       │   │   │   ├── ReaderActivity.kt
│       │   │   │       │   │   │   ├── ReaderNavigationOverlayView.kt
│       │   │   │       │   │   │   ├── ReaderViewModel.kt
│       │   │   │       │   │   │   ├── SaveImageNotifier.kt
│       │   │   │       │   │   │   ├── loader/
│       │   │   │       │   │   │   │   ├── ArchivePageLoader.kt
│       │   │   │       │   │   │   │   ├── ChapterLoader.kt
│       │   │   │       │   │   │   │   ├── DirectoryPageLoader.kt
│       │   │   │       │   │   │   │   ├── DownloadPageLoader.kt
│       │   │   │       │   │   │   │   ├── EpubPageLoader.kt
│       │   │   │       │   │   │   │   ├── HttpPageLoader.kt
│       │   │   │       │   │   │   │   └── PageLoader.kt
│       │   │   │       │   │   │   ├── model/
│       │   │   │       │   │   │   │   ├── ChapterTransition.kt
│       │   │   │       │   │   │   │   ├── InsertPage.kt
│       │   │   │       │   │   │   │   ├── ReaderChapter.kt
│       │   │   │       │   │   │   │   ├── ReaderPage.kt
│       │   │   │       │   │   │   │   └── ViewerChapters.kt
│       │   │   │       │   │   │   ├── setting/
│       │   │   │       │   │   │   │   ├── ReaderOrientation.kt
│       │   │   │       │   │   │   │   ├── ReaderPreferences.kt
│       │   │   │       │   │   │   │   ├── ReaderSettingsScreenModel.kt
│       │   │   │       │   │   │   │   └── ReadingMode.kt
│       │   │   │       │   │   │   └── viewer/
│       │   │   │       │   │   │       ├── GestureDetectorWithLongTap.kt
│       │   │   │       │   │   │       ├── MissingChapters.kt
│       │   │   │       │   │   │       ├── ReaderButton.kt
│       │   │   │       │   │   │       ├── ReaderPageImageView.kt
│       │   │   │       │   │   │       ├── ReaderProgressIndicator.kt
│       │   │   │       │   │   │       ├── ReaderTransitionView.kt
│       │   │   │       │   │   │       ├── Viewer.kt
│       │   │   │       │   │   │       ├── ViewerConfig.kt
│       │   │   │       │   │   │       ├── ViewerNavigation.kt
│       │   │   │       │   │   │       ├── navigation/
│       │   │   │       │   │   │       │   ├── DisabledNavigation.kt
│       │   │   │       │   │   │       │   ├── EdgeNavigation.kt
│       │   │   │       │   │   │       │   ├── KindlishNavigation.kt
│       │   │   │       │   │   │       │   ├── LNavigation.kt
│       │   │   │       │   │   │       │   └── RightAndLeftNavigation.kt
│       │   │   │       │   │   │       ├── pager/
│       │   │   │       │   │   │       │   ├── Pager.kt
│       │   │   │       │   │   │       │   ├── PagerConfig.kt
│       │   │   │       │   │   │       │   ├── PagerPageHolder.kt
│       │   │   │       │   │   │       │   ├── PagerTransitionHolder.kt
│       │   │   │       │   │   │       │   ├── PagerViewer.kt
│       │   │   │       │   │   │       │   ├── PagerViewerAdapter.kt
│       │   │   │       │   │   │       │   └── PagerViewers.kt
│       │   │   │       │   │   │       └── webtoon/
│       │   │   │       │   │   │           ├── WebtoonAdapter.kt
│       │   │   │       │   │   │           ├── WebtoonBaseHolder.kt
│       │   │   │       │   │   │           ├── WebtoonConfig.kt
│       │   │   │       │   │   │           ├── WebtoonFrame.kt
│       │   │   │       │   │   │           ├── WebtoonLayoutManager.kt
│       │   │   │       │   │   │           ├── WebtoonPageHolder.kt
│       │   │   │       │   │   │           ├── WebtoonRecyclerView.kt
│       │   │   │       │   │   │           ├── WebtoonSubsamplingImageView.kt
│       │   │   │       │   │   │           ├── WebtoonTransitionHolder.kt
│       │   │   │       │   │   │           └── WebtoonViewer.kt
│       │   │   │       │   │   ├── security/
│       │   │   │       │   │   │   └── UnlockActivity.kt
│       │   │   │       │   │   ├── setting/
│       │   │   │       │   │   │   ├── PlayerSettingsScreen.kt
│       │   │   │       │   │   │   ├── SettingsScreen.kt
│       │   │   │       │   │   │   └── track/
│       │   │   │       │   │   │       ├── BaseOAuthLoginActivity.kt
│       │   │   │       │   │   │       └── TrackLoginActivity.kt
│       │   │   │       │   │   ├── stats/
│       │   │   │       │   │   │   ├── StatsTab.kt
│       │   │   │       │   │   │   ├── anime/
│       │   │   │       │   │   │   │   ├── AnimeStatsScreenModel.kt
│       │   │   │       │   │   │   │   └── AnimeStatsTab.kt
│       │   │   │       │   │   │   └── manga/
│       │   │   │       │   │   │       ├── MangaStatsScreenModel.kt
│       │   │   │       │   │   │       └── MangaStatsTab.kt
│       │   │   │       │   │   ├── storage/
│       │   │   │       │   │   │   ├── CommonStorageScreenModel.kt
│       │   │   │       │   │   │   ├── StorageTab.kt
│       │   │   │       │   │   │   ├── anime/
│       │   │   │       │   │   │   │   ├── AnimeStorageScreenModel.kt
│       │   │   │       │   │   │   │   └── AnimeStorageTab.kt
│       │   │   │       │   │   │   └── manga/
│       │   │   │       │   │   │       ├── MangaStorageScreenModel.kt
│       │   │   │       │   │   │       └── MangaStorageTab.kt
│       │   │   │       │   │   ├── updates/
│       │   │   │       │   │   │   ├── UpdatesTab.kt
│       │   │   │       │   │   │   ├── anime/
│       │   │   │       │   │   │   │   ├── AnimeUpdatesScreenModel.kt
│       │   │   │       │   │   │   │   └── AnimeUpdatesTab.kt
│       │   │   │       │   │   │   └── manga/
│       │   │   │       │   │   │       ├── MangaUpdatesScreenModel.kt
│       │   │   │       │   │   │       └── MangaUpdatesTab.kt
│       │   │   │       │   │   └── webview/
│       │   │   │       │   │       ├── WebViewActivity.kt
│       │   │   │       │   │       ├── WebViewScreen.kt
│       │   │   │       │   │       └── WebViewScreenModel.kt
│       │   │   │       │   ├── util/
│       │   │   │       │   │   ├── AniChartApi.kt
│       │   │   │       │   │   ├── AnimeExtensions.kt
│       │   │   │       │   │   ├── CrashLogUtil.kt
│       │   │   │       │   │   ├── MangaExtensions.kt
│       │   │   │       │   │   ├── PkceUtil.kt
│       │   │   │       │   │   ├── StorageUtil.kt
│       │   │   │       │   │   ├── chapter/
│       │   │   │       │   │   │   ├── ChapterFilterDownloaded.kt
│       │   │   │       │   │   │   ├── ChapterGetNextUnread.kt
│       │   │   │       │   │   │   └── ChapterRemoveDuplicates.kt
│       │   │   │       │   │   ├── episode/
│       │   │   │       │   │   │   ├── EpisodeFilterDownloaded.kt
│       │   │   │       │   │   │   └── EpsiodeGetNextUnseen.kt
│       │   │   │       │   │   ├── lang/
│       │   │   │       │   │   │   ├── CloseableExtensions.kt
│       │   │   │       │   │   │   ├── DateExtensions.kt
│       │   │   │       │   │   │   └── RectFExtensions.kt
│       │   │   │       │   │   ├── storage/
│       │   │   │       │   │   │   └── OkioExtensions.kt
│       │   │   │       │   │   ├── system/
│       │   │   │       │   │   │   ├── AnimationExtensions.kt
│       │   │   │       │   │   │   ├── AuthenticatorUtil.kt
│       │   │   │       │   │   │   ├── BuildConfig.kt
│       │   │   │       │   │   │   ├── ChildFirstPathClassLoader.kt
│       │   │   │       │   │   │   ├── ContextExtensions.kt
│       │   │   │       │   │   │   ├── DeviceUtilExtensions.kt
│       │   │   │       │   │   │   ├── DisplayExtensions.kt
│       │   │   │       │   │   │   ├── DrawableExtensions.kt
│       │   │   │       │   │   │   ├── IntentExtensions.kt
│       │   │   │       │   │   │   ├── InternalResourceHelper.kt
│       │   │   │       │   │   │   ├── LocaleHelper.kt
│       │   │   │       │   │   │   ├── NetworkExtensions.kt
│       │   │   │       │   │   │   ├── NetworkStateTracker.kt
│       │   │   │       │   │   │   ├── NotificationExtensions.kt
│       │   │   │       │   │   │   ├── TvUtils.kt
│       │   │   │       │   │   │   └── WorkManagerExtensions.kt
│       │   │   │       │   │   └── view/
│       │   │   │       │   │       ├── EditTextPreferenceExtensions.kt
│       │   │   │       │   │       ├── ViewExtensions.kt
│       │   │   │       │   │       └── WindowExtensions.kt
│       │   │   │       │   └── widget/
│       │   │   │       │       ├── MinMaxNumberPicker.kt
│       │   │   │       │       ├── RevealAnimationView.kt
│       │   │   │       │       ├── TachiyomiTextInputEditText.kt
│       │   │   │       │       ├── ViewPagerAdapter.kt
│       │   │   │       │       └── listener/
│       │   │   │       │           ├── IgnoreFirstSpinnerListener.kt
│       │   │   │       │           └── SimpleSeekBarListener.kt
│       │   │   │       └── test/
│       │   │   │           └── DummyTracker.kt
│       │   │   └── mihon/
│       │   │       ├── core/
│       │   │       │   ├── designsystem/
│       │   │       │   │   └── utils/
│       │   │       │   │       └── WindowSize.kt
│       │   │       │   └── migration/
│       │   │       │       ├── Migration.kt
│       │   │       │       ├── MigrationCompletedListener.kt
│       │   │       │       ├── MigrationContext.kt
│       │   │       │       ├── MigrationJobFactory.kt
│       │   │       │       ├── MigrationStrategy.kt
│       │   │       │       ├── MigrationStrategyFactory.kt
│       │   │       │       ├── Migrator.kt
│       │   │       │       └── migrations/
│       │   │       │           ├── AddAllLangMigration.kt
│       │   │       │           ├── CategoryPreferencesCleanupMigration.kt
│       │   │       │           ├── CombineUpdateRestrictionMigration.kt
│       │   │       │           ├── CoverToExternalFileMigration.kt
│       │   │       │           ├── DOHMigration.kt
│       │   │       │           ├── DeleteExternalChapterCacheDirMigration.kt
│       │   │       │           ├── DontRunJobsMigration.kt
│       │   │       │           ├── EnableAutoBackupMigration.kt
│       │   │       │           ├── EnumsMigration.kt
│       │   │       │           ├── ExternalRepoMigration.kt
│       │   │       │           ├── ForceMALLogOutMigration.kt
│       │   │       │           ├── InternalChapterCacheDirMigration.kt
│       │   │       │           ├── LogOutMALMigration.kt
│       │   │       │           ├── MergeSortTypeDirectionMigration.kt
│       │   │       │           ├── MigrateRotationViewerValuesMigration.kt
│       │   │       │           ├── MigrateSecureScreenMigration.kt
│       │   │       │           ├── MigrateSortingModeMigration.kt
│       │   │       │           ├── MigrateToTriStateMigration.kt
│       │   │       │           ├── MigrateTriStateMigration.kt
│       │   │       │           ├── MigrationUtils.kt
│       │   │       │           ├── Migrations.kt
│       │   │       │           ├── MoveChapterPreferencesMigration.kt
│       │   │       │           ├── MovePlayerPreferencesMigration.kt
│       │   │       │           ├── NavigationOptionsMigration.kt
│       │   │       │           ├── NoAppStateMigration.kt
│       │   │       │           ├── PermaTrustExtensionsMigration.kt
│       │   │       │           ├── PlayerPreferenceMigration.kt
│       │   │       │           ├── PrefLangMigration.kt
│       │   │       │           ├── PrivatePreferenceMigration.kt
│       │   │       │           ├── RelativeTimestampMigration.kt
│       │   │       │           ├── RemoveBackgroundJobsMigration.kt
│       │   │       │           ├── RemoveOneTwoHourUpdateMigration.kt
│       │   │       │           ├── RemoveQuickUpdateMigration.kt
│       │   │       │           ├── RemoveReaderTapMigration.kt
│       │   │       │           ├── RenameEnumMigration.kt
│       │   │       │           ├── ResetRotationMigration.kt
│       │   │       │           ├── ResetSortPreferenceRemovedMigration.kt
│       │   │       │           ├── SetupAnimeLibraryUpdateMigration.kt
│       │   │       │           ├── SetupBackgroundTasksMigration.kt
│       │   │       │           ├── SetupBackupCreateMigration.kt
│       │   │       │           ├── SetupMangaLibraryUpdateMigration.kt
│       │   │       │           ├── SplitPreferencesMigration.kt
│       │   │       │           ├── TrustExtensionRepositoryMigration.kt
│       │   │       │           ├── UseWorkManagerMigration.kt
│       │   │       │           ├── VideoOrientationMigration.kt
│       │   │       │           └── VideoPlayerPreferenceMigration.kt
│       │   │       └── feature/
│       │   │           └── upcoming/
│       │   │               ├── anime/
│       │   │               │   ├── UpcomingAnimeScreen.kt
│       │   │               │   ├── UpcomingAnimeScreenContent.kt
│       │   │               │   ├── UpcomingAnimeScreenModel.kt
│       │   │               │   ├── UpcomingAnimeUIModel.kt
│       │   │               │   └── components/
│       │   │               │       └── UpcomingItem.kt
│       │   │               ├── components/
│       │   │               │   └── calendar/
│       │   │               │       ├── Calendar.kt
│       │   │               │       ├── CalendarDay.kt
│       │   │               │       ├── CalendarHeader.kt
│       │   │               │       └── CalendarIndicator.kt
│       │   │               └── manga/
│       │   │                   ├── UpcomingMangaScreen.kt
│       │   │                   ├── UpcomingMangaScreenContent.kt
│       │   │                   ├── UpcomingMangaScreenModel.kt
│       │   │                   ├── UpcomingMangaUIModel.kt
│       │   │                   └── components/
│       │   │                       └── UpcomingItem.kt
│       │   └── res/
│       │       ├── anim/
│       │       │   ├── player_enter_bottom.xml
│       │       │   ├── player_enter_left.xml
│       │       │   ├── player_enter_right.xml
│       │       │   ├── player_enter_top.xml
│       │       │   ├── player_exit_bottom.xml
│       │       │   ├── player_exit_left.xml
│       │       │   ├── player_exit_right.xml
│       │       │   ├── player_exit_top.xml
│       │       │   ├── player_fade_in.xml
│       │       │   ├── player_fade_out.xml
│       │       │   ├── shared_axis_x_pop_enter.xml
│       │       │   ├── shared_axis_x_pop_exit.xml
│       │       │   ├── shared_axis_x_push_enter.xml
│       │       │   └── shared_axis_x_push_exit.xml
│       │       ├── anim-v33/
│       │       │   ├── shared_axis_x_pop_enter.xml
│       │       │   ├── shared_axis_x_pop_exit.xml
│       │       │   ├── shared_axis_x_push_enter.xml
│       │       │   └── shared_axis_x_push_exit.xml
│       │       ├── color/
│       │       │   └── draggable_card_foreground.xml
│       │       ├── drawable/
│       │       │   ├── anim_animelibrary_enter.xml
│       │       │   ├── anim_animelibrary_leave.xml
│       │       │   ├── anim_browse_enter.xml
│       │       │   ├── anim_caret_down.xml
│       │       │   ├── anim_history_enter.xml
│       │       │   ├── anim_library_enter.xml
│       │       │   ├── anim_more_enter.xml
│       │       │   ├── anim_play_to_pause.xml
│       │       │   ├── anim_updates_enter.xml
│       │       │   ├── cover_error.xml
│       │       │   ├── ic_ani.xml
│       │       │   ├── ic_ani_monochrome_launcher.xml
│       │       │   ├── ic_animelibrary_filled_24dp.xml
│       │       │   ├── ic_animelibrary_outline_24dp.xml
│       │       │   ├── ic_animelibrary_selector_24dp.xml
│       │       │   ├── ic_arrow_back_24dp.xml
│       │       │   ├── ic_baseline_collections_24.xml
│       │       │   ├── ic_baseline_input_24.xml
│       │       │   ├── ic_baseline_open_in_new_24.xml
│       │       │   ├── ic_book_24dp.xml
│       │       │   ├── ic_brightness_negative_20dp.xml
│       │       │   ├── ic_chrome_player_mode_24dp.xml
│       │       │   ├── ic_circle_200dp.xml
│       │       │   ├── ic_circle_right_200dp.xml
│       │       │   ├── ic_close_24dp.xml
│       │       │   ├── ic_collections_baseline_state.xml
│       │       │   ├── ic_crop_24dp.xml
│       │       │   ├── ic_crop_off_24dp.xml
│       │       │   ├── ic_done_24dp.xml
│       │       │   ├── ic_done_prev_24dp.xml
│       │       │   ├── ic_download_item_24dp.xml
│       │       │   ├── ic_drag_handle_24dp.xml
│       │       │   ├── ic_extension_24dp.xml
│       │       │   ├── ic_folder_24dp.xml
│       │       │   ├── ic_forward_10_24dp.xml
│       │       │   ├── ic_glasses_24dp.xml
│       │       │   ├── ic_info_24dp.xml
│       │       │   ├── ic_launcher_background.xml
│       │       │   ├── ic_launcher_foreground.xml
│       │       │   ├── ic_overflow_24dp.xml
│       │       │   ├── ic_pause_24dp.xml
│       │       │   ├── ic_pause_circle_filled_24.xml
│       │       │   ├── ic_photo_24dp.xml
│       │       │   ├── ic_play_arrow_24dp.xml
│       │       │   ├── ic_play_circle_filled_24.xml
│       │       │   ├── ic_play_seek_triangle.xml
│       │       │   ├── ic_reader_continuous_vertical_24dp.xml
│       │       │   ├── ic_reader_default_24dp.xml
│       │       │   ├── ic_reader_ltr_24dp.xml
│       │       │   ├── ic_reader_rtl_24dp.xml
│       │       │   ├── ic_reader_vertical_24dp.xml
│       │       │   ├── ic_reader_webtoon_24dp.xml
│       │       │   ├── ic_refresh_24dp.xml
│       │       │   ├── ic_share_24dp.xml
│       │       │   ├── ic_skip_next_24dp.xml
│       │       │   ├── ic_skip_previous_24dp.xml
│       │       │   ├── ic_system_update_alt_white_24dp.xml
│       │       │   ├── ic_tachi_splash.xml
│       │       │   ├── ic_updates_outline_24dp.xml
│       │       │   ├── ic_video_chapter_20dp.xml
│       │       │   ├── ic_volume_off_24dp.xml
│       │       │   ├── ic_warning_white_24dp.xml
│       │       │   ├── line_divider.xml
│       │       │   ├── material_popup_background.xml
│       │       │   ├── outline_brand_family_24.xml
│       │       │   ├── sc_collections_baseline_48dp.xml
│       │       │   ├── sc_collections_bookmark_48dp.xml
│       │       │   ├── sc_explore_48dp.xml
│       │       │   ├── sc_history_48dp.xml
│       │       │   ├── sc_new_releases_48dp.xml
│       │       │   └── sharp_shadow_24.xml
│       │       ├── layout/
│       │       │   ├── download_header.xml
│       │       │   ├── download_item.xml
│       │       │   ├── download_list.xml
│       │       │   ├── player_layout.xml
│       │       │   ├── pref_widget_switch_material.xml
│       │       │   ├── reader_activity.xml
│       │       │   └── reader_error.xml
│       │       ├── menu/
│       │       │   ├── chapter_download.xml
│       │       │   ├── download_single.xml
│       │       │   └── main_nav.xml
│       │       ├── mipmap/
│       │       │   ├── ic_launcher.xml
│       │       │   └── ic_launcher_round.xml
│       │       ├── raw/
│       │       │   └── keep.xml
│       │       ├── values/
│       │       │   ├── attrs.xml
│       │       │   ├── bools.xml
│       │       │   ├── colors_cottoncandy.xml
│       │       │   ├── colors_mocha.xml
│       │       │   ├── dimens.xml
│       │       │   ├── ids.xml
│       │       │   ├── integers.xml
│       │       │   ├── styles.xml
│       │       │   └── themes.xml
│       │       ├── values-night/
│       │       │   ├── bools.xml
│       │       │   ├── colors_cottoncandy.xml
│       │       │   ├── colors_mocha.xml
│       │       │   └── themes.xml
│       │       ├── values-night-v31/
│       │       │   └── themes.xml
│       │       ├── values-sw720dp/
│       │       │   └── dimens.xml
│       │       ├── values-v27/
│       │       │   ├── bools.xml
│       │       │   └── themes.xml
│       │       ├── values-v31/
│       │       │   └── themes.xml
│       │       └── xml/
│       │           ├── network_security_config.xml
│       │           ├── provider_paths.xml
│       │           ├── s_pen_actions.xml
│       │           └── searchable.xml
│       └── test/
│           └── java/
│               └── mihon/
│                   └── core/
│                       └── migration/
│                           └── MigratorTest.kt
├── build.gradle.kts
├── buildSrc/
│   ├── build.gradle.kts
│   ├── settings.gradle.kts
│   └── src/
│       └── main/
│           └── kotlin/
│               ├── mihon/
│               │   └── buildlogic/
│               │       ├── AndroidConfig.kt
│               │       ├── BuildConfig.kt
│               │       ├── Commands.kt
│               │       ├── ProjectExtensions.kt
│               │       └── tasks/
│               │           └── LocalesConfigTask.kt
│               ├── mihon.android.application.compose.gradle.kts
│               ├── mihon.android.application.gradle.kts
│               ├── mihon.benchmark.gradle.kts
│               ├── mihon.code.lint.gradle.kts
│               ├── mihon.library.compose.gradle.kts
│               └── mihon.library.gradle.kts
├── core/
│   ├── archive/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       └── main/
│   │           ├── AndroidManifest.xml
│   │           └── kotlin/
│   │               └── mihon/
│   │                   └── core/
│   │                       └── archive/
│   │                           ├── ArchiveEntry.kt
│   │                           ├── ArchiveInputStream.kt
│   │                           ├── ArchiveReader.kt
│   │                           ├── EpubReader.kt
│   │                           ├── UniFileExtensions.kt
│   │                           └── ZipWriter.kt
│   └── common/
│       ├── build.gradle.kts
│       └── src/
│           └── main/
│               ├── AndroidManifest.xml
│               └── java/
│                   ├── eu/
│                   │   └── kanade/
│                   │       └── tachiyomi/
│                   │           ├── core/
│                   │           │   ├── Constants.kt
│                   │           │   └── security/
│                   │           │       └── SecurityPreferences.kt
│                   │           ├── network/
│                   │           │   ├── AndroidCookieJar.kt
│                   │           │   ├── DohProviders.kt
│                   │           │   ├── JavaScriptEngine.kt
│                   │           │   ├── NetworkHelper.kt
│                   │           │   ├── NetworkPreferences.kt
│                   │           │   ├── OkHttpExtensions.kt
│                   │           │   ├── ProgressListener.kt
│                   │           │   ├── ProgressResponseBody.kt
│                   │           │   ├── Requests.kt
│                   │           │   └── interceptor/
│                   │           │       ├── CloudflareInterceptor.kt
│                   │           │       ├── IgnoreGzipInterceptor.kt
│                   │           │       ├── RateLimitInterceptor.kt
│                   │           │       ├── SpecificHostRateLimitInterceptor.kt
│                   │           │       ├── UncaughtExceptionInterceptor.kt
│                   │           │       ├── UserAgentInterceptor.kt
│                   │           │       └── WebViewInterceptor.kt
│                   │           └── util/
│                   │               ├── lang/
│                   │               │   ├── Hash.kt
│                   │               │   └── StringExtensions.kt
│                   │               ├── storage/
│                   │               │   ├── DiskUtil.kt
│                   │               │   ├── FFmpegUtils.kt
│                   │               │   └── FileExtensions.kt
│                   │               └── system/
│                   │                   ├── DensityExtensions.kt
│                   │                   ├── DeviceUtil.kt
│                   │                   ├── GLUtil.kt
│                   │                   ├── ToastExtensions.kt
│                   │                   └── WebViewUtil.kt
│                   └── tachiyomi/
│                       └── core/
│                           └── common/
│                               ├── i18n/
│                               │   └── Localize.kt
│                               ├── preference/
│                               │   ├── AndroidPreference.kt
│                               │   ├── AndroidPreferenceStore.kt
│                               │   ├── CheckboxState.kt
│                               │   ├── InMemoryPreferenceStore.kt
│                               │   ├── Preference.kt
│                               │   ├── PreferenceStore.kt
│                               │   └── TriState.kt
│                               ├── storage/
│                               │   ├── AndroidStorageFolderProvider.kt
│                               │   ├── FolderProvider.kt
│                               │   ├── UniFileExtensions.kt
│                               │   └── UniFileTempFileManager.kt
│                               └── util/
│                                   ├── lang/
│                                   │   ├── BooleanExtensions.kt
│                                   │   ├── CoroutinesExtensions.kt
│                                   │   ├── RxCoroutineBridge.kt
│                                   │   └── SortUtil.kt
│                                   └── system/
│                                       ├── ImageUtil.kt
│                                       └── LogcatExtensions.kt
├── core-metadata/
│   ├── build.gradle.kts
│   ├── consumer-rules.pro
│   ├── proguard-rules.pro
│   └── src/
│       └── main/
│           ├── AndroidManifest.xml
│           └── java/
│               └── tachiyomi/
│                   └── core/
│                       └── metadata/
│                           ├── comicinfo/
│                           │   └── ComicInfo.kt
│                           └── tachiyomi/
│                               ├── AnimeDetails.kt
│                               ├── ChapterDetails.kt
│                               ├── EpisodeDetails.kt
│                               └── MangaDetails.kt
├── data/
│   ├── build.gradle.kts
│   ├── consumer-rules.pro
│   ├── proguard-rules.pro
│   └── src/
│       └── main/
│           ├── AndroidManifest.xml
│           ├── java/
│           │   ├── mihon/
│           │   │   └── data/
│           │   │       └── repository/
│           │   │           ├── anime/
│           │   │           │   └── AnimeExtensionRepoRepositoryImpl.kt
│           │   │           └── manga/
│           │   │               └── MangaExtensionRepoRepositoryImpl.kt
│           │   └── tachiyomi/
│           │       └── data/
│           │           ├── DatabaseAdapter.kt
│           │           ├── category/
│           │           │   ├── anime/
│           │           │   │   └── AnimeCategoryRepositoryImpl.kt
│           │           │   └── manga/
│           │           │       └── MangaCategoryRepositoryImpl.kt
│           │           ├── custombutton/
│           │           │   └── CustomButtonRepositoryImpl.kt
│           │           ├── entries/
│           │           │   ├── anime/
│           │           │   │   ├── AnimeMapper.kt
│           │           │   │   └── AnimeRepositoryImpl.kt
│           │           │   └── manga/
│           │           │       ├── MangaMapper.kt
│           │           │       └── MangaRepositoryImpl.kt
│           │           ├── handlers/
│           │           │   ├── anime/
│           │           │   │   ├── AndroidAnimeDatabaseHandler.kt
│           │           │   │   ├── AnimeDatabaseHandler.kt
│           │           │   │   ├── AnimeTransactionContext.kt
│           │           │   │   └── QueryPagingAnimeSource.kt
│           │           │   └── manga/
│           │           │       ├── AndroidMangaDatabaseHandler.kt
│           │           │       ├── MangaDatabaseHandler.kt
│           │           │       ├── MangaTransactionContext.kt
│           │           │       └── QueryPagingMangaSource.kt
│           │           ├── history/
│           │           │   ├── anime/
│           │           │   │   ├── AnimeHistoryMapper.kt
│           │           │   │   └── AnimeHistoryRepositoryImpl.kt
│           │           │   └── manga/
│           │           │       ├── MangaHistoryMapper.kt
│           │           │       └── MangaHistoryRepositoryImpl.kt
│           │           ├── items/
│           │           │   ├── chapter/
│           │           │   │   ├── ChapterRepositoryImpl.kt
│           │           │   │   └── ChapterSanitizer.kt
│           │           │   └── episode/
│           │           │       ├── EpisodeRepositoryImpl.kt
│           │           │       └── EpisodeSanitizer.kt
│           │           ├── release/
│           │           │   ├── GithubRelease.kt
│           │           │   └── ReleaseServiceImpl.kt
│           │           ├── source/
│           │           │   ├── anime/
│           │           │   │   ├── AnimeSourcePagingSource.kt
│           │           │   │   ├── AnimeSourceRepositoryImpl.kt
│           │           │   │   └── AnimeStubSourceRepositoryImpl.kt
│           │           │   └── manga/
│           │           │       ├── MangaSourcePagingSource.kt
│           │           │       ├── MangaSourceRepositoryImpl.kt
│           │           │       └── MangaStubSourceRepositoryImpl.kt
│           │           ├── track/
│           │           │   ├── anime/
│           │           │   │   ├── AnimeTrackMapper.kt
│           │           │   │   └── AnimeTrackRepositoryImpl.kt
│           │           │   └── manga/
│           │           │       ├── MangaTrackMapper.kt
│           │           │       └── MangaTrackRepositoryImpl.kt
│           │           └── updates/
│           │               ├── anime/
│           │               │   └── AnimeUpdatesRepositoryImpl.kt
│           │               └── manga/
│           │                   └── MangaUpdatesRepositoryImpl.kt
│           ├── sqldelight/
│           │   ├── data/
│           │   │   ├── categories.sq
│           │   │   ├── chapters.sq
│           │   │   ├── excluded_scanlators.sq
│           │   │   ├── extension_repos.sq
│           │   │   ├── history.sq
│           │   │   ├── manga_sync.sq
│           │   │   ├── mangas.sq
│           │   │   ├── mangas_categories.sq
│           │   │   └── sources.sq
│           │   ├── migrations/
│           │   │   ├── 1.sqm
│           │   │   ├── 10.sqm
│           │   │   ├── 11.sqm
│           │   │   ├── 12.sqm
│           │   │   ├── 13.sqm
│           │   │   ├── 14.sqm
│           │   │   ├── 15.sqm
│           │   │   ├── 16.sqm
│           │   │   ├── 17.sqm
│           │   │   ├── 18.sqm
│           │   │   ├── 19.sqm
│           │   │   ├── 2.sqm
│           │   │   ├── 20.sqm
│           │   │   ├── 21.sqm
│           │   │   ├── 22.sqm
│           │   │   ├── 23.sqm
│           │   │   ├── 24.sqm
│           │   │   ├── 25.sqm
│           │   │   ├── 26.sqm
│           │   │   ├── 27.sqm
│           │   │   ├── 28.sqm
│           │   │   ├── 29.sqm
│           │   │   ├── 3.sqm
│           │   │   ├── 30.sqm
│           │   │   ├── 31.sqm
│           │   │   ├── 32.sqm
│           │   │   ├── 4.sqm
│           │   │   ├── 5.sqm
│           │   │   ├── 6.sqm
│           │   │   ├── 7.sqm
│           │   │   ├── 8.sqm
│           │   │   └── 9.sqm
│           │   └── view/
│           │       ├── historyView.sq
│           │       ├── libraryView.sq
│           │       └── updatesView.sq
│           └── sqldelightanime/
│               ├── dataanime/
│               │   ├── anime_sync.sq
│               │   ├── animehistory.sq
│               │   ├── animes.sq
│               │   ├── animes_categories.sq
│               │   ├── animesources.sq
│               │   ├── categories.sq
│               │   ├── custom_buttons.sq
│               │   ├── episodes.sq
│               │   └── extension_repos.sq
│               ├── migrations/
│               │   ├── 113.sqm
│               │   ├── 114.sqm
│               │   ├── 115.sqm
│               │   ├── 116.sqm
│               │   ├── 117.sqm
│               │   ├── 118.sqm
│               │   ├── 119.sqm
│               │   ├── 120.sqm
│               │   ├── 121.sqm
│               │   ├── 122.sqm
│               │   ├── 123.sqm
│               │   ├── 124.sqm
│               │   ├── 125.sqm
│               │   ├── 126.sqm
│               │   ├── 127.sqm
│               │   ├── 128.sqm
│               │   ├── 129.sqm
│               │   ├── 130.sqm
│               │   ├── 131.sqm
│               │   ├── 132.sqm
│               │   ├── 133.sqm
│               │   ├── 134.sqm
│               │   └── 135.sqm
│               └── view/
│                   ├── animedeletableView.sq
│                   ├── animehistoryView.sq
│                   ├── animehistorystatsView.sq
│                   ├── animelibView.sq
│                   ├── animeseasonsView.sq
│                   ├── animeseasonstatsView.sq
│                   ├── animeupdatesView.sq
│                   └── episodestatsView.sq
├── domain/
│   ├── build.gradle.kts
│   ├── consumer-rules.pro
│   ├── proguard-rules.pro
│   └── src/
│       ├── main/
│       │   ├── AndroidManifest.xml
│       │   └── java/
│       │       ├── aniyomi/
│       │       │   └── domain/
│       │       │       └── anime/
│       │       │           ├── SeasonAnime.kt
│       │       │           └── SeasonDisplayMode.kt
│       │       ├── mihon/
│       │       │   └── domain/
│       │       │       ├── extensionrepo/
│       │       │       │   ├── anime/
│       │       │       │   │   ├── interactor/
│       │       │       │   │   │   ├── CreateAnimeExtensionRepo.kt
│       │       │       │   │   │   ├── DeleteAnimeExtensionRepo.kt
│       │       │       │   │   │   ├── GetAnimeExtensionRepo.kt
│       │       │       │   │   │   ├── GetAnimeExtensionRepoCount.kt
│       │       │       │   │   │   ├── ReplaceAnimeExtensionRepo.kt
│       │       │       │   │   │   └── UpdateAnimeExtensionRepo.kt
│       │       │       │   │   └── repository/
│       │       │       │   │       └── AnimeExtensionRepoRepository.kt
│       │       │       │   ├── exception/
│       │       │       │   │   └── SaveExtensionRepoException.kt
│       │       │       │   ├── manga/
│       │       │       │   │   ├── interactor/
│       │       │       │   │   │   ├── CreateMangaExtensionRepo.kt
│       │       │       │   │   │   ├── DeleteMangaExtensionRepo.kt
│       │       │       │   │   │   ├── GetMangaExtensionRepo.kt
│       │       │       │   │   │   ├── GetMangaExtensionRepoCount.kt
│       │       │       │   │   │   ├── ReplaceMangaExtensionRepo.kt
│       │       │       │   │   │   └── UpdateMangaExtensionRepo.kt
│       │       │       │   │   └── repository/
│       │       │       │   │       └── MangaExtensionRepoRepository.kt
│       │       │       │   ├── model/
│       │       │       │   │   └── ExtensionRepo.kt
│       │       │       │   └── service/
│       │       │       │       ├── ExtensionRepoDto.kt
│       │       │       │       └── ExtensionRepoService.kt
│       │       │       ├── items/
│       │       │       │   ├── chapter/
│       │       │       │   │   └── interactor/
│       │       │       │   │       └── FilterChaptersForDownload.kt
│       │       │       │   └── episode/
│       │       │       │       └── interactor/
│       │       │       │           └── FilterEpisodesForDownload.kt
│       │       │       └── upcoming/
│       │       │           ├── anime/
│       │       │           │   └── interactor/
│       │       │           │       └── GetUpcomingAnime.kt
│       │       │           └── manga/
│       │       │               └── interactor/
│       │       │                   └── GetUpcomingManga.kt
│       │       └── tachiyomi/
│       │           └── domain/
│       │               ├── backup/
│       │               │   └── service/
│       │               │       ├── BackupPreferences.kt
│       │               │       └── PreferenceValues.kt
│       │               ├── category/
│       │               │   ├── anime/
│       │               │   │   ├── interactor/
│       │               │   │   │   ├── CreateAnimeCategoryWithName.kt
│       │               │   │   │   ├── DeleteAnimeCategory.kt
│       │               │   │   │   ├── GetAnimeCategories.kt
│       │               │   │   │   ├── GetVisibleAnimeCategories.kt
│       │               │   │   │   ├── HideAnimeCategory.kt
│       │               │   │   │   ├── RenameAnimeCategory.kt
│       │               │   │   │   ├── ReorderAnimeCategory.kt
│       │               │   │   │   ├── ResetAnimeCategoryFlags.kt
│       │               │   │   │   ├── SetAnimeCategories.kt
│       │               │   │   │   ├── SetAnimeDisplayMode.kt
│       │               │   │   │   ├── SetSortModeForAnimeCategory.kt
│       │               │   │   │   └── UpdateAnimeCategory.kt
│       │               │   │   └── repository/
│       │               │   │       └── AnimeCategoryRepository.kt
│       │               │   ├── manga/
│       │               │   │   ├── interactor/
│       │               │   │   │   ├── CreateMangaCategoryWithName.kt
│       │               │   │   │   ├── DeleteMangaCategory.kt
│       │               │   │   │   ├── GetMangaCategories.kt
│       │               │   │   │   ├── GetVisibleMangaCategories.kt
│       │               │   │   │   ├── HideMangaCategory.kt
│       │               │   │   │   ├── RenameMangaCategory.kt
│       │               │   │   │   ├── ReorderMangaCategory.kt
│       │               │   │   │   ├── ResetMangaCategoryFlags.kt
│       │               │   │   │   ├── SetMangaCategories.kt
│       │               │   │   │   ├── SetMangaDisplayMode.kt
│       │               │   │   │   ├── SetSortModeForMangaCategory.kt
│       │               │   │   │   └── UpdateMangaCategory.kt
│       │               │   │   └── repository/
│       │               │   │       └── MangaCategoryRepository.kt
│       │               │   └── model/
│       │               │       ├── Category.kt
│       │               │       └── CategoryUpdate.kt
│       │               ├── custombuttons/
│       │               │   ├── exception/
│       │               │   │   └── SaveCustomButtonException.kt
│       │               │   ├── interactor/
│       │               │   │   ├── CreateCustomButton.kt
│       │               │   │   ├── DeleteCustomButton.kt
│       │               │   │   ├── GetCustomButtons.kt
│       │               │   │   ├── ReorderCustomButton.kt
│       │               │   │   ├── ToggleFavoriteCustomButton.kt
│       │               │   │   └── UpdateCustomButton.kt
│       │               │   ├── model/
│       │               │   │   ├── CustomButton.kt
│       │               │   │   └── CustomButtonUpdate.kt
│       │               │   └── repository/
│       │               │       └── CustomButtonRepository.kt
│       │               ├── download/
│       │               │   └── service/
│       │               │       └── DownloadPreferences.kt
│       │               ├── entries/
│       │               │   ├── EntryCover.kt
│       │               │   ├── TriState.kt
│       │               │   ├── anime/
│       │               │   │   ├── interactor/
│       │               │   │   │   ├── AnimeFetchInterval.kt
│       │               │   │   │   ├── GetAnime.kt
│       │               │   │   │   ├── GetAnimeByUrlAndSourceId.kt
│       │               │   │   │   ├── GetAnimeFavorites.kt
│       │               │   │   │   ├── GetAnimeWithEpisodesAndSeasons.kt
│       │               │   │   │   ├── GetDuplicateLibraryAnime.kt
│       │               │   │   │   ├── GetLibraryAnime.kt
│       │               │   │   │   ├── NetworkToLocalAnime.kt
│       │               │   │   │   ├── ResetAnimeViewerFlags.kt
│       │               │   │   │   ├── SetAnimeEpisodeFlags.kt
│       │               │   │   │   └── SetAnimeSeasonFlags.kt
│       │               │   │   ├── model/
│       │               │   │   │   ├── Anime.kt
│       │               │   │   │   ├── AnimeCover.kt
│       │               │   │   │   ├── AnimeUpdate.kt
│       │               │   │   │   └── NoSeasonsException.kt
│       │               │   │   └── repository/
│       │               │   │       └── AnimeRepository.kt
│       │               │   └── manga/
│       │               │       ├── interactor/
│       │               │       │   ├── GetDuplicateLibraryManga.kt
│       │               │       │   ├── GetLibraryManga.kt
│       │               │       │   ├── GetManga.kt
│       │               │       │   ├── GetMangaByUrlAndSourceId.kt
│       │               │       │   ├── GetMangaFavorites.kt
│       │               │       │   ├── GetMangaWithChapters.kt
│       │               │       │   ├── MangaFetchInterval.kt
│       │               │       │   ├── NetworkToLocalManga.kt
│       │               │       │   ├── ResetMangaViewerFlags.kt
│       │               │       │   └── SetMangaChapterFlags.kt
│       │               │       ├── model/
│       │               │       │   ├── Manga.kt
│       │               │       │   ├── MangaCover.kt
│       │               │       │   └── MangaUpdate.kt
│       │               │       └── repository/
│       │               │           └── MangaRepository.kt
│       │               ├── history/
│       │               │   ├── anime/
│       │               │   │   ├── interactor/
│       │               │   │   │   ├── GetAnimeHistory.kt
│       │               │   │   │   ├── GetNextEpisodes.kt
│       │               │   │   │   ├── RemoveAnimeHistory.kt
│       │               │   │   │   └── UpsertAnimeHistory.kt
│       │               │   │   ├── model/
│       │               │   │   │   ├── AnimeHistory.kt
│       │               │   │   │   ├── AnimeHistoryUpdate.kt
│       │               │   │   │   └── AnimeHistoryWithRelations.kt
│       │               │   │   └── repository/
│       │               │   │       └── AnimeHistoryRepository.kt
│       │               │   └── manga/
│       │               │       ├── interactor/
│       │               │       │   ├── GetMangaHistory.kt
│       │               │       │   ├── GetNextChapters.kt
│       │               │       │   ├── GetTotalReadDuration.kt
│       │               │       │   ├── RemoveMangaHistory.kt
│       │               │       │   └── UpsertMangaHistory.kt
│       │               │       ├── model/
│       │               │       │   ├── MangaHistory.kt
│       │               │       │   ├── MangaHistoryUpdate.kt
│       │               │       │   └── MangaHistoryWithRelations.kt
│       │               │       └── repository/
│       │               │           └── MangaHistoryRepository.kt
│       │               ├── items/
│       │               │   ├── chapter/
│       │               │   │   ├── interactor/
│       │               │   │   │   ├── GetChapter.kt
│       │               │   │   │   ├── GetChapterByUrlAndMangaId.kt
│       │               │   │   │   ├── GetChaptersByMangaId.kt
│       │               │   │   │   ├── SetMangaDefaultChapterFlags.kt
│       │               │   │   │   ├── ShouldUpdateDbChapter.kt
│       │               │   │   │   └── UpdateChapter.kt
│       │               │   │   ├── model/
│       │               │   │   │   ├── Chapter.kt
│       │               │   │   │   ├── ChapterUpdate.kt
│       │               │   │   │   └── NoChaptersException.kt
│       │               │   │   ├── repository/
│       │               │   │   │   └── ChapterRepository.kt
│       │               │   │   └── service/
│       │               │   │       ├── ChapterRecognition.kt
│       │               │   │       ├── ChapterSorter.kt
│       │               │   │       └── MissingChapters.kt
│       │               │   ├── episode/
│       │               │   │   ├── interactor/
│       │               │   │   │   ├── GetEpisode.kt
│       │               │   │   │   ├── GetEpisodeByUrlAndAnimeId.kt
│       │               │   │   │   ├── GetEpisodesByAnimeId.kt
│       │               │   │   │   ├── SetAnimeDefaultEpisodeFlags.kt
│       │               │   │   │   ├── ShouldUpdateDbEpisode.kt
│       │               │   │   │   └── UpdateEpisode.kt
│       │               │   │   ├── model/
│       │               │   │   │   ├── Episode.kt
│       │               │   │   │   ├── EpisodeUpdate.kt
│       │               │   │   │   └── NoEpisodesException.kt
│       │               │   │   ├── repository/
│       │               │   │   │   └── EpisodeRepository.kt
│       │               │   │   └── service/
│       │               │   │       ├── EpisodeRecognition.kt
│       │               │   │       ├── EpisodeSorter.kt
│       │               │   │       └── MissingEpisodes.kt
│       │               │   └── season/
│       │               │       ├── interactor/
│       │               │       │   ├── GetAnimeSeasonsByParentId.kt
│       │               │       │   ├── SetAnimeDefaultSeasonFlags.kt
│       │               │       │   └── ShouldUpdateDbSeason.kt
│       │               │       └── service/
│       │               │           ├── SeasonRecognition.kt
│       │               │           └── SeasonSorter.kt
│       │               ├── library/
│       │               │   ├── anime/
│       │               │   │   ├── LibraryAnime.kt
│       │               │   │   └── model/
│       │               │   │       └── AnimeLibrarySortMode.kt
│       │               │   ├── manga/
│       │               │   │   ├── LibraryManga.kt
│       │               │   │   └── model/
│       │               │   │       └── MangaLibrarySortMode.kt
│       │               │   ├── model/
│       │               │   │   ├── Flag.kt
│       │               │   │   └── LibraryDisplayMode.kt
│       │               │   └── service/
│       │               │       └── LibraryPreferences.kt
│       │               ├── release/
│       │               │   ├── interactor/
│       │               │   │   └── GetApplicationRelease.kt
│       │               │   ├── model/
│       │               │   │   └── Release.kt
│       │               │   └── service/
│       │               │       └── ReleaseService.kt
│       │               ├── source/
│       │               │   ├── anime/
│       │               │   │   ├── interactor/
│       │               │   │   │   ├── GetAnimeSourcesWithNonLibraryAnime.kt
│       │               │   │   │   └── GetRemoteAnime.kt
│       │               │   │   ├── model/
│       │               │   │   │   ├── AnimeSource.kt
│       │               │   │   │   ├── AnimeSourceWithIds.kt
│       │               │   │   │   ├── DeletableAnime.kt
│       │               │   │   │   ├── Pin.kt
│       │               │   │   │   └── StubAnimeSource.kt
│       │               │   │   ├── repository/
│       │               │   │   │   ├── AnimeSourceRepository.kt
│       │               │   │   │   └── AnimeStubSourceRepository.kt
│       │               │   │   └── service/
│       │               │   │       └── AnimeSourceManager.kt
│       │               │   └── manga/
│       │               │       ├── interactor/
│       │               │       │   ├── GetMangaSourcesWithNonLibraryManga.kt
│       │               │       │   └── GetRemoteManga.kt
│       │               │       ├── model/
│       │               │       │   ├── MangaSourceWithCount.kt
│       │               │       │   ├── Pin.kt
│       │               │       │   ├── Source.kt
│       │               │       │   └── StubMangaSource.kt
│       │               │       ├── repository/
│       │               │       │   ├── MangaSourceRepository.kt
│       │               │       │   └── MangaStubSourceRepository.kt
│       │               │       └── service/
│       │               │           └── MangaSourceManager.kt
│       │               ├── storage/
│       │               │   └── service/
│       │               │       ├── StorageManager.kt
│       │               │       └── StoragePreferences.kt
│       │               ├── track/
│       │               │   ├── anime/
│       │               │   │   ├── interactor/
│       │               │   │   │   ├── DeleteAnimeTrack.kt
│       │               │   │   │   ├── GetAnimeTracks.kt
│       │               │   │   │   ├── GetTracksPerAnime.kt
│       │               │   │   │   └── InsertAnimeTrack.kt
│       │               │   │   ├── model/
│       │               │   │   │   └── AnimeTrack.kt
│       │               │   │   └── repository/
│       │               │   │       └── AnimeTrackRepository.kt
│       │               │   └── manga/
│       │               │       ├── interactor/
│       │               │       │   ├── DeleteMangaTrack.kt
│       │               │       │   ├── GetMangaTracks.kt
│       │               │       │   ├── GetTracksPerManga.kt
│       │               │       │   └── InsertMangaTrack.kt
│       │               │       ├── model/
│       │               │       │   └── MangaTrack.kt
│       │               │       └── repository/
│       │               │           └── MangaTrackRepository.kt
│       │               └── updates/
│       │                   ├── anime/
│       │                   │   ├── interactor/
│       │                   │   │   └── GetAnimeUpdates.kt
│       │                   │   ├── model/
│       │                   │   │   └── AnimeUpdatesWithRelations.kt
│       │                   │   └── repository/
│       │                   │       └── AnimeUpdatesRepository.kt
│       │                   └── manga/
│       │                       ├── interactor/
│       │                       │   └── GetMangaUpdates.kt
│       │                       ├── model/
│       │                       │   └── MangaUpdatesWithRelations.kt
│       │                       └── repository/
│       │                           └── MangaUpdatesRepository.kt
│       └── test/
│           └── java/
│               └── tachiyomi/
│                   └── domain/
│                       ├── entries/
│                       │   ├── anime/
│                       │   │   └── interactor/
│                       │   │       └── AnimeFetchIntervalTest.kt
│                       │   └── manga/
│                       │       └── interactor/
│                       │           └── MangaFetchIntervalTest.kt
│                       ├── items/
│                       │   ├── chapter/
│                       │   │   └── service/
│                       │   │       └── ChapterRecognitionTest.kt
│                       │   └── service/
│                       │       └── MissingItemsTest.kt
│                       ├── library/
│                       │   └── model/
│                       │       └── LibraryFlagsTest.kt
│                       └── release/
│                           └── interactor/
│                               └── GetApplicationReleaseTest.kt
├── fastlane/
│   └── metadata/
│       └── android/
│           └── en-US/
│               ├── full_description.txt
│               └── short_description.txt
├── gradle/
│   ├── androidx.versions.toml
│   ├── aniyomi.versions.toml
│   ├── compose.versions.toml
│   ├── gradle-daemon-jvm.properties
│   ├── kotlinx.versions.toml
│   ├── libs.versions.toml
│   └── wrapper/
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── i18n/
│   ├── README.md
│   ├── build.gradle.kts
│   └── src/
│       ├── commonMain/
│       │   └── moko-resources/
│       │       ├── am/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── ar/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── as/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── base/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── be/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── bg/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── bn/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── ca/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── ceb/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── cs/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── cv/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── da/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── de/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── el/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── eo/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── es/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── eu/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── fa/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── fi/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── fil/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── fr/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── gl/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── he/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── hi/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── hr/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── hu/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── in/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── it/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── ja/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── jv/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── ka-rGE/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── kk/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── km/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── kn/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── ko/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── lt/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── lv/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── ml/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── mr/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── ms/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── my/
│       │       │   └── strings.xml
│       │       ├── nb-rNO/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── ne/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── nl/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── nn/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── pl/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── pt/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── pt-rBR/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── ro/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── ru/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── sa/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── sah/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── sc/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── sdh/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── sk/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── sq/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── sr/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── sv/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── ta/
│       │       │   └── strings.xml
│       │       ├── te/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── th/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── tr/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── uk/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── uz/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── vi/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       ├── zh-rCN/
│       │       │   ├── plurals.xml
│       │       │   └── strings.xml
│       │       └── zh-rTW/
│       │           ├── plurals.xml
│       │           └── strings.xml
│       └── main/
│           └── AndroidManifest.xml
├── i18n-aniyomi/
│   ├── build.gradle.kts
│   └── src/
│       └── commonMain/
│           └── moko-resources/
│               ├── am/
│               │   └── strings.xml
│               ├── ar/
│               │   ├── plurals.xml
│               │   └── strings.xml
│               ├── as/
│               │   └── strings.xml
│               ├── base/
│               │   ├── plurals.xml
│               │   └── strings.xml
│               ├── be/
│               │   └── strings.xml
│               ├── bg/
│               │   └── strings.xml
│               ├── bn/
│               │   └── strings.xml
│               ├── ca/
│               │   ├── plurals.xml
│               │   └── strings.xml
│               ├── ceb/
│               │   └── strings.xml
│               ├── cs/
│               │   ├── plurals.xml
│               │   └── strings.xml
│               ├── cv/
│               │   └── strings.xml
│               ├── da/
│               │   └── strings.xml
│               ├── de/
│               │   ├── plurals.xml
│               │   └── strings.xml
│               ├── el/
│               │   └── strings.xml
│               ├── eo/
│               │   └── strings.xml
│               ├── es/
│               │   ├── plurals.xml
│               │   └── strings.xml
│               ├── eu/
│               │   └── strings.xml
│               ├── fa/
│               │   ├── plurals.xml
│               │   └── strings.xml
│               ├── fi/
│               │   ├── plurals.xml
│               │   └── strings.xml
│               ├── fil/
│               │   ├── plurals.xml
│               │   └── strings.xml
│               ├── fr/
│               │   ├── plurals.xml
│               │   └── strings.xml
│               ├── gl/
│               │   └── strings.xml
│               ├── he/
│               │   ├── plurals.xml
│               │   └── strings.xml
│               ├── hi/
│               │   └── strings.xml
│               ├── hr/
│               │   ├── plurals.xml
│               │   └── strings.xml
│               ├── hu/
│               │   └── strings.xml
│               ├── in/
│               │   ├── plurals.xml
│               │   └── strings.xml
│               ├── it/
│               │   ├── plurals.xml
│               │   └── strings.xml
│               ├── ja/
│               │   └── strings.xml
│               ├── jv/
│               │   └── strings.xml
│               ├── ka-rGE/
│               │   └── strings.xml
│               ├── kk/
│               │   └── strings.xml
│               ├── km/
│               │   └── strings.xml
│               ├── kn/
│               │   └── strings.xml
│               ├── ko/
│               │   ├── plurals.xml
│               │   └── strings.xml
│               ├── lt/
│               │   └── strings.xml
│               ├── lv/
│               │   └── strings.xml
│               ├── ml/
│               │   └── strings.xml
│               ├── mr/
│               │   └── strings.xml
│               ├── ms/
│               │   └── strings.xml
│               ├── my/
│               │   └── strings.xml
│               ├── nb-rNO/
│               │   └── strings.xml
│               ├── ne/
│               │   └── strings.xml
│               ├── nl/
│               │   └── strings.xml
│               ├── nn/
│               │   └── strings.xml
│               ├── pl/
│               │   ├── plurals.xml
│               │   └── strings.xml
│               ├── pt/
│               │   ├── plurals.xml
│               │   └── strings.xml
│               ├── pt-rBR/
│               │   ├── plurals.xml
│               │   └── strings.xml
│               ├── ro/
│               │   └── strings.xml
│               ├── ru/
│               │   └── strings.xml
│               ├── sa/
│               │   └── strings.xml
│               ├── sah/
│               │   └── strings.xml
│               ├── sc/
│               │   └── strings.xml
│               ├── sdh/
│               │   └── strings.xml
│               ├── sk/
│               │   └── strings.xml
│               ├── sq/
│               │   └── strings.xml
│               ├── sr/
│               │   └── strings.xml
│               ├── sv/
│               │   └── strings.xml
│               ├── ta/
│               │   └── strings.xml
│               ├── te/
│               │   └── strings.xml
│               ├── th/
│               │   └── strings.xml
│               ├── tr/
│               │   ├── plurals.xml
│               │   └── strings.xml
│               ├── uk/
│               │   ├── plurals.xml
│               │   └── strings.xml
│               ├── ur/
│               │   └── strings.xml
│               ├── uz/
│               │   └── strings.xml
│               ├── vi/
│               │   └── strings.xml
│               ├── zh-rCN/
│               │   ├── plurals.xml
│               │   └── strings.xml
│               └── zh-rTW/
│                   └── strings.xml
├── macrobenchmark/
│   ├── README.md
│   ├── build.gradle.kts
│   └── src/
│       └── main/
│           ├── AndroidManifest.xml
│           └── java/
│               └── tachiyomi/
│                   └── macrobenchmark/
│                       ├── BaselineProfileGenerator.kt
│                       └── StartupBenchmark.kt
├── presentation-core/
│   ├── build.gradle.kts
│   ├── consumer-rules.pro
│   ├── proguard-rules.pro
│   └── src/
│       └── main/
│           ├── AndroidManifest.xml
│           ├── java/
│           │   ├── mihon/
│           │   │   └── presentation/
│           │   │       └── core/
│           │   │           └── util/
│           │   │               └── PagingDataUtil.kt
│           │   └── tachiyomi/
│           │       └── presentation/
│           │           └── core/
│           │               ├── components/
│           │               │   ├── ActionButton.kt
│           │               │   ├── AdaptiveSheet.kt
│           │               │   ├── Badges.kt
│           │               │   ├── CircularProgressIndicator.kt
│           │               │   ├── CollapsibleBox.kt
│           │               │   ├── LabeledCheckbox.kt
│           │               │   ├── LazyColumnWithAction.kt
│           │               │   ├── LazyGrid.kt
│           │               │   ├── LazyList.kt
│           │               │   ├── LinkIcon.kt
│           │               │   ├── ListGroupHeader.kt
│           │               │   ├── Pill.kt
│           │               │   ├── SectionCard.kt
│           │               │   ├── SettingsItems.kt
│           │               │   ├── TwoPanelBox.kt
│           │               │   ├── VerticalFastScroller.kt
│           │               │   ├── WheelPicker.kt
│           │               │   └── material/
│           │               │       ├── AlertDialog.kt
│           │               │       ├── Button.kt
│           │               │       ├── Constants.kt
│           │               │       ├── FloatingActionButton.kt
│           │               │       ├── IconButtonTokens.kt
│           │               │       ├── IconToggleButton.kt
│           │               │       ├── NavigationBar.kt
│           │               │       ├── NavigationRail.kt
│           │               │       ├── PullRefresh.kt
│           │               │       ├── Scaffold.kt
│           │               │       ├── Slider.kt
│           │               │       ├── Surface.kt
│           │               │       └── Tabs.kt
│           │               ├── i18n/
│           │               │   └── Localize.kt
│           │               ├── icons/
│           │               │   ├── CustomIcons.kt
│           │               │   ├── Discord.kt
│           │               │   └── Github.kt
│           │               ├── screens/
│           │               │   ├── EmptyScreen.kt
│           │               │   ├── InfoScreen.kt
│           │               │   └── LoadingScreen.kt
│           │               ├── theme/
│           │               │   ├── Color.kt
│           │               │   └── Typography.kt
│           │               └── util/
│           │                   ├── Elevation.kt
│           │                   ├── LazyListState.kt
│           │                   ├── Modifier.kt
│           │                   ├── PaddingValues.kt
│           │                   ├── Preference.kt
│           │                   ├── Scrollbar.kt
│           │                   └── ThemePreviews.kt
│           └── res/
│               ├── values/
│               │   ├── color_cloudflare.xml
│               │   ├── color_doom.xml
│               │   ├── color_lavender.xml
│               │   ├── color_matrix.xml
│               │   ├── color_sapphire.xml
│               │   ├── colors.xml
│               │   ├── colors_greenapple.xml
│               │   ├── colors_midnightdusk.xml
│               │   ├── colors_monochrome.xml
│               │   ├── colors_nord.xml
│               │   ├── colors_strawberry.xml
│               │   ├── colors_tachiyomi.xml
│               │   ├── colors_tako.xml
│               │   ├── colors_tealturqoise.xml
│               │   ├── colors_tidalwave.xml
│               │   ├── colors_yinyang.xml
│               │   └── colors_yotsuba.xml
│               └── values-night/
│                   ├── color_cloudflare.xml
│                   ├── color_doom.xml
│                   ├── color_lavender.xml
│                   ├── color_matrix.xml
│                   ├── color_sapphire.xml
│                   ├── colors.xml
│                   ├── colors_greenapple.xml
│                   ├── colors_midnightdusk.xml
│                   ├── colors_monochrome.xml
│                   ├── colors_nord.xml
│                   ├── colors_strawberry.xml
│                   ├── colors_tachiyomi.xml
│                   ├── colors_tako.xml
│                   ├── colors_tealturqoise.xml
│                   ├── colors_tidalwave.xml
│                   ├── colors_yinyang.xml
│                   └── colors_yotsuba.xml
├── presentation-widget/
│   ├── build.gradle.kts
│   ├── consumer-rules.pro
│   ├── proguard-rules.pro
│   └── src/
│       └── main/
│           ├── AndroidManifest.xml
│           ├── java/
│           │   └── tachiyomi/
│           │       └── presentation/
│           │           └── widget/
│           │               ├── components/
│           │               │   ├── anime/
│           │               │   │   ├── LockedAnimeWidget.kt
│           │               │   │   ├── UpdatesAnimeCover.kt
│           │               │   │   └── UpdatesAnimeWidget.kt
│           │               │   └── manga/
│           │               │       ├── LockedMangaWidget.kt
│           │               │       ├── UpdatesMangaCover.kt
│           │               │       └── UpdatesMangaWidget.kt
│           │               ├── entries/
│           │               │   ├── anime/
│           │               │   │   ├── AnimeUpdatesGridCoverScreenGlanceReceiver.kt
│           │               │   │   ├── AnimeUpdatesGridCoverScreenGlanceWidget.kt
│           │               │   │   ├── AnimeUpdatesGridGlanceReceiver.kt
│           │               │   │   ├── AnimeUpdatesGridGlanceWidget.kt
│           │               │   │   ├── AnimeWidgetManager.kt
│           │               │   │   └── BaseAnimeUpdatesGridGlanceWidget.kt
│           │               │   └── manga/
│           │               │       ├── BaseMangaUpdatesGridGlanceWidget.kt
│           │               │       ├── MangaUpdatesGridCoverScreenGlanceReceiver.kt
│           │               │       ├── MangaUpdatesGridCoverScreenGlanceWidget.kt
│           │               │       ├── MangaUpdatesGridGlanceReceiver.kt
│           │               │       ├── MangaUpdatesGridGlanceWidget.kt
│           │               │       └── MangaWidgetManager.kt
│           │               └── util/
│           │                   └── GlanceUtils.kt
│           └── res/
│               ├── drawable/
│               │   ├── appwidget_background.xml
│               │   ├── appwidget_cover_error.xml
│               │   └── appwidget_coverscreen_background.xml
│               ├── layout/
│               │   ├── appwidget_coverscreen_loading.xml
│               │   └── appwidget_loading.xml
│               ├── values/
│               │   ├── colors_appwidget.xml
│               │   └── dimens.xml
│               ├── values-night-v31/
│               │   └── colors_appwidget.xml
│               ├── values-v31/
│               │   ├── colors_appwidget.xml
│               │   └── dimens.xml
│               └── xml/
│                   ├── updates_grid_homescreen_widget_info.xml
│                   ├── updates_grid_lockscreen_widget_info.xml
│                   └── updates_grid_samsung_cover_widget_info.xml
├── settings.gradle.kts
├── source-api/
│   ├── build.gradle.kts
│   ├── consumer-proguard.pro
│   └── src/
│       ├── androidMain/
│       │   ├── AndroidManifest.xml
│       │   └── kotlin/
│       │       └── eu/
│       │           └── kanade/
│       │               └── tachiyomi/
│       │                   ├── animesource/
│       │                   │   └── PreferenceScreen.kt
│       │                   ├── source/
│       │                   │   └── PreferenceScreen.kt
│       │                   └── util/
│       │                       └── RxExtension.kt
│       └── commonMain/
│           └── kotlin/
│               └── eu/
│                   └── kanade/
│                       └── tachiyomi/
│                           ├── animesource/
│                           │   ├── AnimeCatalogueSource.kt
│                           │   ├── AnimeSource.kt
│                           │   ├── AnimeSourceFactory.kt
│                           │   ├── ConfigurableAnimeSource.kt
│                           │   ├── PreferenceScreen.kt
│                           │   ├── UnmeteredSource.kt
│                           │   ├── model/
│                           │   │   ├── AnimeFilter.kt
│                           │   │   ├── AnimeFilterList.kt
│                           │   │   ├── AnimeUpdateStrategy.kt
│                           │   │   ├── AnimesPage.kt
│                           │   │   ├── FetchType.kt
│                           │   │   ├── Hoster.kt
│                           │   │   ├── SAnime.kt
│                           │   │   ├── SAnimeImpl.kt
│                           │   │   ├── SEpisode.kt
│                           │   │   ├── SEpisodeImpl.kt
│                           │   │   └── Video.kt
│                           │   ├── online/
│                           │   │   ├── AnimeHttpSource.kt
│                           │   │   ├── ParsedAnimeHttpSource.kt
│                           │   │   └── ResolvableAnimeSource.kt
│                           │   └── utils/
│                           │       └── Preferences.kt
│                           ├── source/
│                           │   ├── CatalogueSource.kt
│                           │   ├── ConfigurableSource.kt
│                           │   ├── MangaSource.kt
│                           │   ├── PreferenceScreen.kt
│                           │   ├── SourceFactory.kt
│                           │   ├── UnmeteredSource.kt
│                           │   ├── model/
│                           │   │   ├── Filter.kt
│                           │   │   ├── FilterList.kt
│                           │   │   ├── MangasPage.kt
│                           │   │   ├── Page.kt
│                           │   │   ├── SChapter.kt
│                           │   │   ├── SChapterImpl.kt
│                           │   │   ├── SManga.kt
│                           │   │   ├── SMangaImpl.kt
│                           │   │   └── UpdateStrategy.kt
│                           │   └── online/
│                           │       ├── HttpSource.kt
│                           │       ├── ParsedHttpSource.kt
│                           │       └── ResolvableSource.kt
│                           └── util/
│                               ├── JsonExtensions.kt
│                               ├── JsoupExtensions.kt
│                               ├── RxExtension.kt
│                               └── VideoInfo.kt
└── source-local/
    ├── build.gradle.kts
    ├── consumer-rules.pro
    ├── proguard-rules.pro
    └── src/
        ├── androidMain/
        │   ├── AndroidManifest.xml
        │   └── kotlin/
        │       └── tachiyomi/
        │           └── source/
        │               └── local/
        │                   ├── entries/
        │                   │   ├── anime/
        │                   │   │   ├── LocalAnimeFetchTypeManager.kt
        │                   │   │   └── LocalAnimeSource.kt
        │                   │   └── manga/
        │                   │       └── LocalMangaSource.kt
        │                   ├── filter/
        │                   │   ├── anime/
        │                   │   │   └── AnimeOrderBy.kt
        │                   │   └── manga/
        │                   │       └── MangaOrderBy.kt
        │                   ├── image/
        │                   │   ├── anime/
        │                   │   │   ├── LocalAnimeBackgroundManager.kt
        │                   │   │   ├── LocalAnimeCoverManager.kt
        │                   │   │   └── LocalEpisodeThumbnailManager.kt
        │                   │   └── manga/
        │                   │       └── LocalMangaCoverManager.kt
        │                   ├── io/
        │                   │   ├── anime/
        │                   │   │   └── LocalAnimeSourceFileSystem.kt
        │                   │   └── manga/
        │                   │       └── LocalMangaSourceFileSystem.kt
        │                   └── metadata/
        │                       └── EpubReaderExtensions.kt
        └── commonMain/
            └── kotlin/
                └── tachiyomi/
                    └── source/
                        └── local/
                            ├── entries/
                            │   ├── anime/
                            │   │   ├── LocalAnimeFetchTypeManager.kt
                            │   │   └── LocalAnimeSource.kt
                            │   └── manga/
                            │       └── LocalMangaSource.kt
                            ├── image/
                            │   ├── anime/
                            │   │   ├── LocalAnimeBackgroundManager.kt
                            │   │   ├── LocalAnimeCoverManager.kt
                            │   │   └── LocalEpisodeThumbnailManager.kt
                            │   └── manga/
                            │       └── LocalMangaCoverManager.kt
                            └── io/
                                ├── Archive.kt
                                ├── Format.kt
                                ├── anime/
                                │   └── LocalAnimeSourceFileSystem.kt
                                └── manga/
                                    └── LocalMangaSourceFileSystem.kt
Copy disabled (too large) Download .json
Condensed preview — 1961 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (15,020K chars).
[
  {
    "path": ".editorconfig",
    "chars": 752,
    "preview": "root = true\n\n[*]\ncharset = utf-8\nindent_size = 2\nindent_style = space\ninsert_final_newline = true\ntrim_trailing_whitespa"
  },
  {
    "path": ".gitattributes",
    "chars": 304,
    "preview": "* text=auto\n* text eol=lf\n\n# Windows forced line-endings\n/.idea/* text eol=crlf\n\n# Gradle wrapper\n*.jar binary\n\n# Images"
  },
  {
    "path": ".github/FUNDING.yml",
    "chars": 27,
    "preview": "github: jmir1\nko_fi: jmir1\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 429,
    "preview": "blank_issues_enabled: false\ncontact_links:\n  - name: ❌ Help with Extensions\n    url: https://aniyomi.org/docs/faq/browse"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/report_issue.yml",
    "chars": 3414,
    "preview": "name: 🐞 Issue report\ndescription: Report an issue in Aniyomi\nlabels: [Bug]\nbody:\n  - type: textarea\n    id: reproduce-st"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/request_feature.yml",
    "chars": 1396,
    "preview": "name: ⭐ Feature request\ndescription: Suggest a feature to improve Aniyomi\nlabels: [Feature request]\nbody:\n  - type: text"
  },
  {
    "path": ".github/pull_request_template.md",
    "chars": 504,
    "preview": "<!--\n  Please include a summary of the change and which issue is fixed.\n  Also make sure you've tested your code and als"
  },
  {
    "path": ".github/renovate.json5",
    "chars": 222,
    "preview": "{\n  \"$schema\": \"https://docs.renovatebot.com/renovate-schema.json\",\n  \"extends\": [\"config:recommended\"],\n  \"labels\": [\"D"
  },
  {
    "path": ".github/workflows/build_pull_request.yml",
    "chars": 2050,
    "preview": "name: PR build check\non:\n  pull_request:\n    paths:\n      - '**'\n      - '!**.md'\n      - '!i18n/src/commonMain/moko-res"
  },
  {
    "path": ".github/workflows/build_push.yml",
    "chars": 4806,
    "preview": "name: CI\n\npermissions:\n  contents: write\n\non:\n  push:\n    branches:\n      - '*'\n    tags:\n      - v*\n\nconcurrency:\n  gro"
  },
  {
    "path": ".gitignore",
    "chars": 163,
    "preview": "# Build files\n.gradle\n.kotlin\nbuild\n\n# IDE files\n*.iml\n.idea/*\n!.idea/icon.png\n/captures\n\n# Configuration files\nlocal.pr"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 16316,
    "preview": "# Changelog\n\nAll notable changes to this project will be documented in this file.\n\nThe format is a modified version of ["
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "chars": 5304,
    "preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nWe as members, contributors, and leaders pledge to make participa"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 2228,
    "preview": "Looking to report an issue/bug or make a feature request? Please refer to the [README file](https://github.com/aniyomior"
  },
  {
    "path": "LICENSE",
    "chars": 10173,
    "preview": "                                 Apache License\n                           Version 2.0, January 2004\n                   "
  },
  {
    "path": "README.md",
    "chars": 4656,
    "preview": "<div align=\"center\">\n\n<a href=\"https://aniyomi.org\">\n    <img src=\"./.github/assets/logo.png\" alt=\"Aniyomi logo\" title=\""
  },
  {
    "path": "app/.idea/.gitignore",
    "chars": 47,
    "preview": "# Default ignored files\n/shelf/\n/workspace.xml\n"
  },
  {
    "path": "app/.idea/.name",
    "chars": 18,
    "preview": "MangaDownloader.kt"
  },
  {
    "path": "app/.idea/discord.xml",
    "chars": 223,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"DiscordProjectSettings\">\n    <option nam"
  },
  {
    "path": "app/.idea/gradle.xml",
    "chars": 631,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"GradleMigrationSettings\" migrationVersio"
  },
  {
    "path": "app/.idea/misc.xml",
    "chars": 107,
    "preview": "<project version=\"4\">\n  <component name=\"ExternalStorageConfigurationManager\" enabled=\"true\" />\n</project>\n"
  },
  {
    "path": "app/.idea/vcs.xml",
    "chars": 184,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"VcsDirectoryMappings\">\n    <mapping dire"
  },
  {
    "path": "app/build.gradle.kts",
    "chars": 10449,
    "preview": "import mihon.buildlogic.Config\nimport mihon.buildlogic.getBuildTime\nimport mihon.buildlogic.getCommitCount\nimport mihon."
  },
  {
    "path": "app/proguard-android-optimize.txt",
    "chars": 700,
    "preview": "-dontusemixedcaseclassnames\n-ignorewarnings\n-verbose\n\n-keepattributes *Annotation*\n\n-keepclasseswithmembernames,included"
  },
  {
    "path": "app/proguard-rules.pro",
    "chars": 3702,
    "preview": "-dontobfuscate\n\n-keep,allowoptimization class eu.kanade.**\n-keep,allowoptimization class tachiyomi.**\n-keep,allowoptimiz"
  },
  {
    "path": "app/shortcuts.xml",
    "chars": 2660,
    "preview": "<shortcuts xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <shortcut\n        android:enabled=\"true\"\n    "
  },
  {
    "path": "app/src/debug/res/drawable/ic_launcher_foreground.xml",
    "chars": 1378,
    "preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"108dp\"\n    android:height=\"108dp\"\n"
  },
  {
    "path": "app/src/debug/res/mipmap/ic_launcher.xml",
    "chars": 334,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<adaptive-icon xmlns:android=\"http://schemas.android.com/apk/res/android\">\n  <bac"
  },
  {
    "path": "app/src/debug/res/mipmap/ic_launcher_round.xml",
    "chars": 334,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<adaptive-icon xmlns:android=\"http://schemas.android.com/apk/res/android\">\n  <bac"
  },
  {
    "path": "app/src/main/AndroidManifest.xml",
    "chars": 12814,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:to"
  },
  {
    "path": "app/src/main/assets/aniyomi.lua",
    "chars": 3047,
    "preview": "aniyomi = {}\n-- UI\nfunction aniyomi.show_text(text)\n    mp.set_property(\"user-data/aniyomi/show_text\", text)\nend\nfunctio"
  },
  {
    "path": "app/src/main/baseline-prof.txt",
    "chars": 3932838,
    "preview": "Landroidx/activity/Cancellable;\nLandroidx/activity/ComponentActivity;\nPLandroidx/activity/ComponentActivity;->$r8$lambda"
  },
  {
    "path": "app/src/main/java/aniyomi/util/DataSaver.kt",
    "chars": 6165,
    "preview": "package aniyomi.util\n\nimport eu.kanade.domain.source.service.SourcePreferences\nimport eu.kanade.domain.source.service.So"
  },
  {
    "path": "app/src/main/java/eu/kanade/core/preference/CheckboxState.kt",
    "chars": 417,
    "preview": "package eu.kanade.core.preference\n\nimport androidx.compose.ui.state.ToggleableState\nimport tachiyomi.core.common.prefere"
  },
  {
    "path": "app/src/main/java/eu/kanade/core/preference/PreferenceMutableState.kt",
    "chars": 964,
    "preview": "package eu.kanade.core.preference\n\nimport androidx.compose.runtime.MutableState\nimport androidx.compose.runtime.mutableS"
  },
  {
    "path": "app/src/main/java/eu/kanade/core/util/AnimeSourceUtil.kt",
    "chars": 438,
    "preview": "package eu.kanade.core.util\n\nimport androidx.compose.runtime.Composable\nimport androidx.compose.runtime.collectAsState\ni"
  },
  {
    "path": "app/src/main/java/eu/kanade/core/util/CollectionUtils.kt",
    "chars": 3393,
    "preview": "package eu.kanade.core.util\n\nimport androidx.compose.ui.util.fastFilter\nimport androidx.compose.ui.util.fastForEach\nimpo"
  },
  {
    "path": "app/src/main/java/eu/kanade/core/util/MangaSourceUtil.kt",
    "chars": 438,
    "preview": "package eu.kanade.core.util\n\nimport androidx.compose.runtime.Composable\nimport androidx.compose.runtime.collectAsState\ni"
  },
  {
    "path": "app/src/main/java/eu/kanade/core/util/RxJavaExtensions.kt",
    "chars": 612,
    "preview": "package eu.kanade.core.util\n\nimport kotlinx.coroutines.channels.awaitClose\nimport kotlinx.coroutines.flow.Flow\nimport ko"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/DomainModule.kt",
    "chars": 24168,
    "preview": "package eu.kanade.domain\n\nimport eu.kanade.domain.download.anime.interactor.DeleteEpisodeDownload\nimport eu.kanade.domai"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/SYDomainModule.kt",
    "chars": 437,
    "preview": "package eu.kanade.domain\n\nimport eu.kanade.domain.source.manga.interactor.ToggleExcludeFromMangaDataSaver\nimport uy.kohe"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/base/BasePreferences.kt",
    "chars": 1682,
    "preview": "package eu.kanade.domain.base\n\nimport android.content.Context\nimport android.content.pm.PackageManager\nimport dev.iceroc"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/base/ExtensionInstallerPreference.kt",
    "chars": 2095,
    "preview": "package eu.kanade.domain.base\n\nimport android.content.Context\nimport eu.kanade.domain.base.BasePreferences.ExtensionInst"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/download/anime/interactor/DeleteEpisodeDownload.kt",
    "chars": 739,
    "preview": "package eu.kanade.domain.download.anime.interactor\n\nimport eu.kanade.tachiyomi.data.download.anime.AnimeDownloadManager\n"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/download/manga/interactor/DeleteChapterDownload.kt",
    "chars": 739,
    "preview": "package eu.kanade.domain.download.manga.interactor\n\nimport eu.kanade.tachiyomi.data.download.manga.MangaDownloadManager\n"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/entries/anime/interactor/SetAnimeViewerFlags.kt",
    "chars": 2072,
    "preview": "package eu.kanade.domain.entries.anime.interactor\n\nimport tachiyomi.core.common.util.lang.toLong\nimport tachiyomi.domain"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/entries/anime/interactor/SyncSeasonsWithSource.kt",
    "chars": 4101,
    "preview": "package eu.kanade.domain.entries.anime.interactor\n\nimport eu.kanade.domain.entries.anime.model.toDomainAnime\nimport eu.k"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/entries/anime/interactor/UpdateAnime.kt",
    "chars": 5413,
    "preview": "package eu.kanade.domain.entries.anime.interactor\n\nimport eu.kanade.domain.entries.anime.model.hasCustomBackground\nimpor"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/entries/anime/model/Anime.kt",
    "chars": 3929,
    "preview": "package eu.kanade.domain.entries.anime.model\n\nimport eu.kanade.domain.base.BasePreferences\nimport eu.kanade.tachiyomi.an"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/entries/manga/interactor/GetExcludedScanlators.kt",
    "chars": 690,
    "preview": "package eu.kanade.domain.entries.manga.interactor\n\nimport kotlinx.coroutines.flow.Flow\nimport kotlinx.coroutines.flow.ma"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/entries/manga/interactor/SetExcludedScanlators.kt",
    "chars": 809,
    "preview": "package eu.kanade.domain.entries.manga.interactor\n\nimport tachiyomi.data.handlers.manga.MangaDatabaseHandler\n\nclass SetE"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/entries/manga/interactor/SetMangaViewerFlags.kt",
    "chars": 1148,
    "preview": "package eu.kanade.domain.entries.manga.interactor\n\nimport eu.kanade.tachiyomi.ui.reader.setting.ReaderOrientation\nimport"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/entries/manga/interactor/UpdateManga.kt",
    "chars": 4020,
    "preview": "package eu.kanade.domain.entries.manga.interactor\n\nimport eu.kanade.domain.entries.manga.model.hasCustomCover\nimport eu."
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/entries/manga/model/Manga.kt",
    "chars": 4261,
    "preview": "package eu.kanade.domain.entries.manga.model\n\nimport eu.kanade.domain.base.BasePreferences\nimport eu.kanade.tachiyomi.da"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/extension/anime/interactor/GetAnimeExtensionLanguages.kt",
    "chars": 1138,
    "preview": "package eu.kanade.domain.extension.anime.interactor\n\nimport eu.kanade.domain.source.service.SourcePreferences\nimport eu."
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/extension/anime/interactor/GetAnimeExtensionSources.kt",
    "chars": 1285,
    "preview": "package eu.kanade.domain.extension.anime.interactor\n\nimport eu.kanade.domain.source.service.SourcePreferences\nimport eu."
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/extension/anime/interactor/GetAnimeExtensionsByType.kt",
    "chars": 2537,
    "preview": "package eu.kanade.domain.extension.anime.interactor\n\nimport eu.kanade.domain.extension.anime.model.AnimeExtensions\nimpor"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/extension/anime/interactor/TrustAnimeExtension.kt",
    "chars": 1371,
    "preview": "package eu.kanade.domain.extension.anime.interactor\n\nimport android.content.pm.PackageInfo\nimport androidx.core.content."
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/extension/anime/model/AnimeExtensions.kt",
    "chars": 345,
    "preview": "package eu.kanade.domain.extension.anime.model\n\nimport eu.kanade.tachiyomi.extension.anime.model.AnimeExtension\n\ndata cl"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/extension/manga/interactor/GetMangaExtensionLanguages.kt",
    "chars": 1138,
    "preview": "package eu.kanade.domain.extension.manga.interactor\n\nimport eu.kanade.domain.source.service.SourcePreferences\nimport eu."
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/extension/manga/interactor/GetMangaExtensionSources.kt",
    "chars": 1275,
    "preview": "package eu.kanade.domain.extension.manga.interactor\n\nimport eu.kanade.domain.source.service.SourcePreferences\nimport eu."
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/extension/manga/interactor/GetMangaExtensionsByType.kt",
    "chars": 2537,
    "preview": "package eu.kanade.domain.extension.manga.interactor\n\nimport eu.kanade.domain.extension.manga.model.MangaExtensions\nimpor"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/extension/manga/interactor/TrustMangaExtension.kt",
    "chars": 1371,
    "preview": "package eu.kanade.domain.extension.manga.interactor\n\nimport android.content.pm.PackageInfo\nimport androidx.core.content."
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/extension/manga/model/MangaExtensions.kt",
    "chars": 345,
    "preview": "package eu.kanade.domain.extension.manga.model\n\nimport eu.kanade.tachiyomi.extension.manga.model.MangaExtension\n\ndata cl"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/items/chapter/interactor/GetAvailableScanlators.kt",
    "chars": 748,
    "preview": "package eu.kanade.domain.items.chapter.interactor\n\nimport kotlinx.coroutines.flow.Flow\nimport kotlinx.coroutines.flow.ma"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/items/chapter/interactor/SetReadStatus.kt",
    "chars": 2742,
    "preview": "package eu.kanade.domain.items.chapter.interactor\n\nimport eu.kanade.domain.download.manga.interactor.DeleteChapterDownlo"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/items/chapter/interactor/SyncChaptersWithSource.kt",
    "chars": 9890,
    "preview": "package eu.kanade.domain.items.chapter.interactor\n\nimport eu.kanade.domain.entries.manga.interactor.GetExcludedScanlator"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/items/chapter/model/Chapter.kt",
    "chars": 1308,
    "preview": "package eu.kanade.domain.items.chapter.model\n\nimport eu.kanade.tachiyomi.data.database.models.manga.ChapterImpl\nimport e"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/items/chapter/model/ChapterFilter.kt",
    "chars": 2300,
    "preview": "package eu.kanade.domain.items.chapter.model\n\nimport eu.kanade.domain.entries.manga.model.downloadedFilter\nimport eu.kan"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/items/episode/interactor/SetSeenStatus.kt",
    "chars": 2746,
    "preview": "package eu.kanade.domain.items.episode.interactor\n\nimport eu.kanade.domain.download.anime.interactor.DeleteEpisodeDownlo"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/items/episode/interactor/SyncEpisodesWithSource.kt",
    "chars": 10235,
    "preview": "package eu.kanade.domain.items.episode.interactor\n\nimport eu.kanade.domain.entries.anime.interactor.UpdateAnime\nimport e"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/items/episode/model/Episode.kt",
    "chars": 1682,
    "preview": "package eu.kanade.domain.items.episode.model\n\nimport eu.kanade.tachiyomi.animesource.model.SEpisode\nimport eu.kanade.tac"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/items/episode/model/EpisodeFilter.kt",
    "chars": 2604,
    "preview": "package eu.kanade.domain.items.episode.model\n\nimport eu.kanade.domain.entries.anime.model.downloadedFilter\nimport eu.kan"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/source/anime/interactor/GetAnimeIncognitoState.kt",
    "chars": 1404,
    "preview": "package eu.kanade.domain.source.anime.interactor\n\nimport eu.kanade.domain.base.BasePreferences\nimport eu.kanade.domain.s"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/source/anime/interactor/GetAnimeSourcesWithFavoriteCount.kt",
    "chars": 2300,
    "preview": "package eu.kanade.domain.source.anime.interactor\n\nimport eu.kanade.domain.source.interactor.SetMigrateSorting\nimport eu."
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/source/anime/interactor/GetEnabledAnimeSources.kt",
    "chars": 1851,
    "preview": "package eu.kanade.domain.source.anime.interactor\n\nimport eu.kanade.domain.source.service.SourcePreferences\nimport kotlin"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/source/anime/interactor/GetLanguagesWithAnimeSources.kt",
    "chars": 1287,
    "preview": "package eu.kanade.domain.source.anime.interactor\n\nimport eu.kanade.domain.source.service.SourcePreferences\nimport eu.kan"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/source/anime/interactor/ToggleAnimeIncognito.kt",
    "chars": 438,
    "preview": "package eu.kanade.domain.source.anime.interactor\n\nimport eu.kanade.domain.source.service.SourcePreferences\nimport tachiy"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/source/anime/interactor/ToggleAnimeSource.kt",
    "chars": 1199,
    "preview": "package eu.kanade.domain.source.anime.interactor\n\nimport eu.kanade.domain.source.service.SourcePreferences\nimport tachiy"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/source/anime/interactor/ToggleAnimeSourcePin.kt",
    "chars": 586,
    "preview": "package eu.kanade.domain.source.anime.interactor\n\nimport eu.kanade.domain.source.service.SourcePreferences\nimport tachiy"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/source/anime/model/AnimeSource.kt",
    "chars": 562,
    "preview": "package eu.kanade.domain.source.anime.model\n\nimport androidx.compose.ui.graphics.ImageBitmap\nimport androidx.compose.ui."
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/source/interactor/SetMigrateSorting.kt",
    "chars": 493,
    "preview": "package eu.kanade.domain.source.interactor\n\nimport eu.kanade.domain.source.service.SourcePreferences\n\nclass SetMigrateSo"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/source/interactor/ToggleLanguage.kt",
    "chars": 485,
    "preview": "package eu.kanade.domain.source.interactor\n\nimport eu.kanade.domain.source.service.SourcePreferences\nimport tachiyomi.co"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/source/manga/interactor/GetEnabledMangaSources.kt",
    "chars": 2267,
    "preview": "package eu.kanade.domain.source.manga.interactor\n\nimport eu.kanade.domain.source.service.SourcePreferences\nimport kotlin"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/source/manga/interactor/GetLanguagesWithMangaSources.kt",
    "chars": 1272,
    "preview": "package eu.kanade.domain.source.manga.interactor\n\nimport eu.kanade.domain.source.service.SourcePreferences\nimport eu.kan"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/source/manga/interactor/GetMangaIncognitoState.kt",
    "chars": 1404,
    "preview": "package eu.kanade.domain.source.manga.interactor\n\nimport eu.kanade.domain.base.BasePreferences\nimport eu.kanade.domain.s"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/source/manga/interactor/GetMangaSourcesWithFavoriteCount.kt",
    "chars": 2275,
    "preview": "package eu.kanade.domain.source.manga.interactor\n\nimport eu.kanade.domain.source.interactor.SetMigrateSorting\nimport eu."
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/source/manga/interactor/ToggleExcludeFromMangaDataSaver.kt",
    "chars": 574,
    "preview": "package eu.kanade.domain.source.manga.interactor\n\nimport eu.kanade.domain.source.service.SourcePreferences\nimport tachiy"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/source/manga/interactor/ToggleMangaIncognito.kt",
    "chars": 438,
    "preview": "package eu.kanade.domain.source.manga.interactor\n\nimport eu.kanade.domain.source.service.SourcePreferences\nimport tachiy"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/source/manga/interactor/ToggleMangaSource.kt",
    "chars": 1189,
    "preview": "package eu.kanade.domain.source.manga.interactor\n\nimport eu.kanade.domain.source.service.SourcePreferences\nimport tachiy"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/source/manga/interactor/ToggleMangaSourcePin.kt",
    "chars": 576,
    "preview": "package eu.kanade.domain.source.manga.interactor\n\nimport eu.kanade.domain.source.service.SourcePreferences\nimport tachiy"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/source/manga/model/MangaSource.kt",
    "chars": 552,
    "preview": "package eu.kanade.domain.source.manga.model\n\nimport androidx.compose.ui.graphics.ImageBitmap\nimport androidx.compose.ui."
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/source/service/SourcePreferences.kt",
    "chars": 4447,
    "preview": "package eu.kanade.domain.source.service\n\nimport eu.kanade.domain.source.interactor.SetMigrateSorting\nimport eu.kanade.ta"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/track/anime/interactor/AddAnimeTracks.kt",
    "chars": 4657,
    "preview": "package eu.kanade.domain.track.anime.interactor\n\nimport eu.kanade.domain.track.anime.model.toDbTrack\nimport eu.kanade.do"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/track/anime/interactor/RefreshAnimeTracks.kt",
    "chars": 1823,
    "preview": "package eu.kanade.domain.track.anime.interactor\n\nimport eu.kanade.domain.track.anime.model.toDbTrack\nimport eu.kanade.do"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/track/anime/interactor/SyncEpisodeProgressWithTrack.kt",
    "chars": 1935,
    "preview": "package eu.kanade.domain.track.anime.interactor\n\nimport eu.kanade.domain.track.anime.model.toDbTrack\nimport eu.kanade.ta"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/track/anime/interactor/TrackEpisode.kt",
    "chars": 2616,
    "preview": "package eu.kanade.domain.track.anime.interactor\n\nimport android.content.Context\nimport eu.kanade.domain.track.anime.mode"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/track/anime/model/AnimeTrack.kt",
    "chars": 1587,
    "preview": "package eu.kanade.domain.track.anime.model\n\nimport tachiyomi.domain.track.anime.model.AnimeTrack\nimport eu.kanade.tachiy"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/track/anime/service/DelayedAnimeTrackingUpdateJob.kt",
    "chars": 2998,
    "preview": "package eu.kanade.domain.track.anime.service\n\nimport android.content.Context\nimport androidx.work.BackoffPolicy\nimport a"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/track/anime/store/DelayedAnimeTrackingStore.kt",
    "chars": 1376,
    "preview": "package eu.kanade.domain.track.anime.store\n\nimport android.content.Context\nimport androidx.core.content.edit\nimport logc"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/track/manga/interactor/AddMangaTracks.kt",
    "chars": 4652,
    "preview": "package eu.kanade.domain.track.manga.interactor\n\nimport eu.kanade.domain.track.manga.model.toDbTrack\nimport eu.kanade.do"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/track/manga/interactor/RefreshMangaTracks.kt",
    "chars": 1823,
    "preview": "package eu.kanade.domain.track.manga.interactor\n\nimport eu.kanade.domain.track.manga.model.toDbTrack\nimport eu.kanade.do"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/track/manga/interactor/SyncChapterProgressWithTrack.kt",
    "chars": 1934,
    "preview": "package eu.kanade.domain.track.manga.interactor\n\nimport eu.kanade.domain.track.manga.model.toDbTrack\nimport eu.kanade.ta"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/track/manga/interactor/TrackChapter.kt",
    "chars": 2734,
    "preview": "package eu.kanade.domain.track.manga.interactor\n\nimport android.content.Context\nimport eu.kanade.domain.track.manga.mode"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/track/manga/model/MangaTrack.kt",
    "chars": 1574,
    "preview": "package eu.kanade.domain.track.manga.model\n\nimport tachiyomi.domain.track.manga.model.MangaTrack\nimport eu.kanade.tachiy"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/track/manga/service/DelayedMangaTrackingUpdateJob.kt",
    "chars": 2771,
    "preview": "package eu.kanade.domain.track.manga.service\n\nimport android.content.Context\nimport androidx.work.BackoffPolicy\nimport a"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/track/manga/store/DelayedMangaTrackingStore.kt",
    "chars": 1361,
    "preview": "package eu.kanade.domain.track.manga.store\n\nimport android.content.Context\nimport androidx.core.content.edit\nimport logc"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/track/model/AutoTrackState.kt",
    "chars": 289,
    "preview": "package eu.kanade.domain.track.model\n\nimport dev.icerock.moko.resources.StringResource\nimport tachiyomi.i18n.MR\n\nenum cl"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/track/service/TrackPreferences.kt",
    "chars": 1827,
    "preview": "package eu.kanade.domain.track.service\n\nimport eu.kanade.domain.track.model.AutoTrackState\nimport eu.kanade.tachiyomi.da"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/ui/UiPreferences.kt",
    "chars": 1732,
    "preview": "package eu.kanade.domain.ui\n\nimport eu.kanade.domain.ui.model.AppTheme\nimport eu.kanade.domain.ui.model.NavStyle\nimport "
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/ui/model/AppTheme.kt",
    "chars": 1083,
    "preview": "package eu.kanade.domain.ui.model\n\nimport dev.icerock.moko.resources.StringResource\nimport tachiyomi.i18n.MR\nimport tach"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/ui/model/NavStyle.kt",
    "chars": 2052,
    "preview": "package eu.kanade.domain.ui.model\n\nimport androidx.compose.material.icons.Icons\nimport androidx.compose.material.icons.o"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/ui/model/StartScreen.kt",
    "chars": 782,
    "preview": "package eu.kanade.domain.ui.model\n\nimport dev.icerock.moko.resources.StringResource\nimport eu.kanade.presentation.util.T"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/ui/model/TabletUiMode.kt",
    "chars": 323,
    "preview": "package eu.kanade.domain.ui.model\n\nimport dev.icerock.moko.resources.StringResource\nimport tachiyomi.i18n.MR\n\nenum class"
  },
  {
    "path": "app/src/main/java/eu/kanade/domain/ui/model/ThemeMode.kt",
    "chars": 491,
    "preview": "package eu.kanade.domain.ui.model\n\nimport androidx.appcompat.app.AppCompatDelegate\n\nenum class ThemeMode {\n    LIGHT,\n  "
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/browse/BaseBrowseItem.kt",
    "chars": 1202,
    "preview": "package eu.kanade.presentation.browse\n\nimport androidx.compose.foundation.combinedClickable\nimport androidx.compose.foun"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/browse/BrowseBadges.kt",
    "chars": 413,
    "preview": "package eu.kanade.presentation.browse\n\nimport androidx.compose.material.icons.Icons\nimport androidx.compose.material.ico"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/browse/BrowseSourceDialogs.kt",
    "chars": 1145,
    "preview": "package eu.kanade.presentation.browse\n\nimport androidx.compose.material3.AlertDialog\nimport androidx.compose.material3.T"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/browse/BrowseSourceLoadingItem.kt",
    "chars": 681,
    "preview": "package eu.kanade.presentation.browse\n\nimport androidx.compose.foundation.layout.Arrangement\nimport androidx.compose.fou"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/browse/GlobalSearchResultItems.kt",
    "chars": 3361,
    "preview": "package eu.kanade.presentation.browse\n\nimport androidx.compose.foundation.clickable\nimport androidx.compose.foundation.l"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/browse/GlobalSerachCard.kt",
    "chars": 1020,
    "preview": "package eu.kanade.presentation.browse\n\nimport androidx.compose.foundation.layout.Box\nimport androidx.compose.foundation."
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/browse/anime/AnimeExtensionDetailsScreen.kt",
    "chars": 17157,
    "preview": "package eu.kanade.presentation.browse.anime\n\nimport android.content.Intent\nimport android.net.Uri\nimport android.provide"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/browse/anime/AnimeExtensionFilterScreen.kt",
    "chars": 2301,
    "preview": "package eu.kanade.presentation.browse.anime\n\nimport androidx.compose.foundation.layout.PaddingValues\nimport androidx.com"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/browse/anime/AnimeExtensionsScreen.kt",
    "chars": 20032,
    "preview": "package eu.kanade.presentation.browse.anime\n\nimport androidx.compose.animation.core.animateDpAsState\nimport androidx.com"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/browse/anime/AnimeSourcesFilterScreen.kt",
    "chars": 4249,
    "preview": "package eu.kanade.presentation.browse.anime\n\nimport androidx.compose.foundation.layout.PaddingValues\nimport androidx.com"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/browse/anime/AnimeSourcesScreen.kt",
    "chars": 7534,
    "preview": "package eu.kanade.presentation.browse.anime\n\nimport androidx.compose.foundation.clickable\nimport androidx.compose.founda"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/browse/anime/BrowseAnimeSourceScreen.kt",
    "chars": 6615,
    "preview": "package eu.kanade.presentation.browse.anime\n\nimport androidx.compose.foundation.layout.PaddingValues\nimport androidx.com"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/browse/anime/GlobalAnimeSearchScreen.kt",
    "chars": 4272,
    "preview": "package eu.kanade.presentation.browse.anime\n\nimport androidx.compose.foundation.layout.PaddingValues\nimport androidx.com"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/browse/anime/MigrateAnimeScreen.kt",
    "chars": 2441,
    "preview": "package eu.kanade.presentation.browse.anime\n\nimport androidx.compose.foundation.layout.PaddingValues\nimport androidx.com"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/browse/anime/MigrateAnimeSearchScreen.kt",
    "chars": 2040,
    "preview": "package eu.kanade.presentation.browse.anime\n\nimport androidx.compose.runtime.Composable\nimport androidx.compose.runtime."
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/browse/anime/MigrateAnimeSourceScreen.kt",
    "chars": 8434,
    "preview": "package eu.kanade.presentation.browse.anime\n\nimport androidx.compose.foundation.background\nimport androidx.compose.found"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/browse/anime/components/BaseAnimeSourceItem.kt",
    "chars": 2510,
    "preview": "package eu.kanade.presentation.browse.anime.components\n\nimport androidx.compose.foundation.layout.Column\nimport androidx"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/browse/anime/components/BrowseAnimeIcons.kt",
    "chars": 5525,
    "preview": "package eu.kanade.presentation.browse.anime.components\n\nimport android.util.DisplayMetrics\nimport androidx.compose.found"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/browse/anime/components/BrowseAnimeSourceComfortableGrid.kt",
    "chars": 3094,
    "preview": "package eu.kanade.presentation.browse.anime.components\n\nimport androidx.compose.foundation.layout.Arrangement\nimport and"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/browse/anime/components/BrowseAnimeSourceCompactGrid.kt",
    "chars": 3074,
    "preview": "package eu.kanade.presentation.browse.anime.components\n\nimport androidx.compose.foundation.layout.Arrangement\nimport and"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/browse/anime/components/BrowseAnimeSourceList.kt",
    "chars": 3354,
    "preview": "package eu.kanade.presentation.browse.anime.components\n\nimport androidx.compose.foundation.layout.BoxWithConstraints\nimp"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/browse/anime/components/BrowseAnimeSourceToolbar.kt",
    "chars": 5408,
    "preview": "package eu.kanade.presentation.browse.anime.components\n\nimport androidx.compose.material.icons.Icons\nimport androidx.com"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/browse/anime/components/GlobalAnimeSearchCardRow.kt",
    "chars": 2892,
    "preview": "package eu.kanade.presentation.browse.anime.components\n\nimport androidx.compose.foundation.layout.Arrangement\nimport and"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/browse/anime/components/GlobalAnimeSearchToolbar.kt",
    "chars": 5010,
    "preview": "package eu.kanade.presentation.browse.anime.components\n\nimport androidx.compose.foundation.background\nimport androidx.co"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/browse/manga/BrowseMangaSourceScreen.kt",
    "chars": 6595,
    "preview": "package eu.kanade.presentation.browse.manga\n\nimport androidx.compose.foundation.layout.PaddingValues\nimport androidx.com"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/browse/manga/GlobalMangaSearchScreen.kt",
    "chars": 4247,
    "preview": "package eu.kanade.presentation.browse.manga\n\nimport androidx.compose.foundation.layout.PaddingValues\nimport androidx.com"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/browse/manga/MangaExtensionDetailsScreen.kt",
    "chars": 17531,
    "preview": "package eu.kanade.presentation.browse.manga\n\nimport android.content.Intent\nimport android.net.Uri\nimport android.provide"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/browse/manga/MangaExtensionFilterScreen.kt",
    "chars": 2291,
    "preview": "package eu.kanade.presentation.browse.manga\n\nimport androidx.compose.foundation.layout.PaddingValues\nimport androidx.com"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/browse/manga/MangaExtensionsScreen.kt",
    "chars": 21616,
    "preview": "package eu.kanade.presentation.browse.manga\n\nimport androidx.compose.animation.core.animateDpAsState\nimport androidx.com"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/browse/manga/MangaSourcesFilterScreen.kt",
    "chars": 4197,
    "preview": "package eu.kanade.presentation.browse.manga\n\nimport androidx.compose.foundation.layout.PaddingValues\nimport androidx.com"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/browse/manga/MangaSourcesScreen.kt",
    "chars": 8235,
    "preview": "package eu.kanade.presentation.browse.manga\n\nimport androidx.compose.foundation.clickable\nimport androidx.compose.founda"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/browse/manga/MigrateMangaScreen.kt",
    "chars": 2441,
    "preview": "package eu.kanade.presentation.browse.manga\n\nimport androidx.compose.foundation.layout.PaddingValues\nimport androidx.com"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/browse/manga/MigrateMangaSearchScreen.kt",
    "chars": 2025,
    "preview": "package eu.kanade.presentation.browse.manga\n\nimport androidx.compose.runtime.Composable\nimport androidx.compose.runtime."
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/browse/manga/MigrateMangaSourceScreen.kt",
    "chars": 8384,
    "preview": "package eu.kanade.presentation.browse.manga\n\nimport androidx.compose.foundation.background\nimport androidx.compose.found"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/browse/manga/components/BaseMangaSourceItem.kt",
    "chars": 2475,
    "preview": "package eu.kanade.presentation.browse.manga.components\n\nimport androidx.compose.foundation.layout.Column\nimport androidx"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/browse/manga/components/BrowseMangaIcons.kt",
    "chars": 5512,
    "preview": "package eu.kanade.presentation.browse.manga.components\n\nimport android.util.DisplayMetrics\nimport androidx.compose.found"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/browse/manga/components/BrowseMangaSourceComfortableGrid.kt",
    "chars": 3094,
    "preview": "package eu.kanade.presentation.browse.manga.components\n\nimport androidx.compose.foundation.layout.Arrangement\nimport and"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/browse/manga/components/BrowseMangaSourceCompactGrid.kt",
    "chars": 3074,
    "preview": "package eu.kanade.presentation.browse.manga.components\n\nimport androidx.compose.foundation.layout.Arrangement\nimport and"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/browse/manga/components/BrowseMangaSourceList.kt",
    "chars": 3354,
    "preview": "package eu.kanade.presentation.browse.manga.components\n\nimport androidx.compose.foundation.layout.BoxWithConstraints\nimp"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/browse/manga/components/BrowseMangaSourceToolbar.kt",
    "chars": 5388,
    "preview": "package eu.kanade.presentation.browse.manga.components\n\nimport androidx.compose.material.icons.Icons\nimport androidx.com"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/browse/manga/components/GlobalMangaSearchCardRow.kt",
    "chars": 2892,
    "preview": "package eu.kanade.presentation.browse.manga.components\n\nimport androidx.compose.foundation.layout.Arrangement\nimport and"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/browse/manga/components/GlobalMangaSearchToolbar.kt",
    "chars": 5006,
    "preview": "package eu.kanade.presentation.browse.manga.components\n\nimport androidx.compose.foundation.background\nimport androidx.co"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/category/AnimeCategoryScreen.kt",
    "chars": 4095,
    "preview": "package eu.kanade.presentation.category\n\nimport androidx.compose.foundation.layout.Arrangement\nimport androidx.compose.f"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/category/CategoryExtensions.kt",
    "chars": 624,
    "preview": "package eu.kanade.presentation.category\n\nimport android.content.Context\nimport androidx.compose.runtime.Composable\nimpor"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/category/MangaCategoryScreen.kt",
    "chars": 4095,
    "preview": "package eu.kanade.presentation.category\n\nimport androidx.compose.foundation.layout.Arrangement\nimport androidx.compose.f"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/category/components/CategoryDialogs.kt",
    "chars": 11095,
    "preview": "package eu.kanade.presentation.category.components\n\nimport androidx.compose.foundation.clickable\nimport androidx.compose"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/category/components/CategoryFloatingActionButton.kt",
    "chars": 1032,
    "preview": "package eu.kanade.presentation.category.components\n\nimport androidx.compose.foundation.lazy.LazyListState\nimport android"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/category/components/CategoryListItem.kt",
    "chars": 3239,
    "preview": "package eu.kanade.presentation.category.components\n\nimport androidx.compose.foundation.clickable\nimport androidx.compose"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/components/AdaptiveSheet.kt",
    "chars": 3134,
    "preview": "package eu.kanade.presentation.components\n\nimport androidx.activity.compose.BackHandler\nimport androidx.compose.animatio"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/components/AppBar.kt",
    "chars": 16363,
    "preview": "package eu.kanade.presentation.components\n\nimport androidx.compose.foundation.basicMarquee\nimport androidx.compose.found"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/components/Banners.kt",
    "chars": 6903,
    "preview": "package eu.kanade.presentation.components\n\nimport androidx.compose.animation.AnimatedVisibility\nimport androidx.compose."
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/components/DateText.kt",
    "chars": 2297,
    "preview": "package eu.kanade.presentation.components\n\nimport androidx.compose.runtime.Composable\nimport androidx.compose.runtime.re"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/components/DropdownMenu.kt",
    "chars": 3578,
    "preview": "package eu.kanade.presentation.components\n\nimport androidx.compose.foundation.ScrollState\nimport androidx.compose.founda"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/components/EmptyScreen.kt",
    "chars": 1576,
    "preview": "package eu.kanade.presentation.components\n\nimport androidx.compose.material.icons.Icons\nimport androidx.compose.material"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/components/EntryDownloadDropdownMenu.kt",
    "chars": 1796,
    "preview": "package eu.kanade.presentation.components\n\nimport androidx.compose.material3.DropdownMenuItem\nimport androidx.compose.ma"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/components/FloatingActionAddButton.kt",
    "chars": 1018,
    "preview": "package eu.kanade.presentation.components\n\nimport androidx.compose.foundation.lazy.LazyListState\nimport androidx.compose"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/components/ItemDownloadIndicator.kt",
    "chars": 1565,
    "preview": "package eu.kanade.presentation.components\n\nimport androidx.compose.foundation.combinedClickable\nimport androidx.compose."
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/components/TabbedDialog.kt",
    "chars": 4329,
    "preview": "package eu.kanade.presentation.components\n\nimport androidx.compose.animation.animateContentSize\nimport androidx.compose."
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/components/TabbedScreen.kt",
    "chars": 5855,
    "preview": "package eu.kanade.presentation.components\n\nimport androidx.compose.foundation.layout.Column\nimport androidx.compose.foun"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/crash/CrashScreen.kt",
    "chars": 2523,
    "preview": "package eu.kanade.presentation.crash\n\nimport androidx.compose.foundation.background\nimport androidx.compose.foundation.l"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/entries/EntryScreenConstants.kt",
    "chars": 349,
    "preview": "package eu.kanade.presentation.entries\n\nenum class DownloadAction {\n    NEXT_1_ITEM,\n    NEXT_5_ITEMS,\n    NEXT_10_ITEMS"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/entries/anime/AnimeScreen.kt",
    "chars": 55191,
    "preview": "package eu.kanade.presentation.entries.anime\n\nimport androidx.activity.compose.BackHandler\nimport androidx.compose.anima"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/entries/anime/DuplicateAnimeDialog.kt",
    "chars": 4619,
    "preview": "package eu.kanade.presentation.entries.anime\n\nimport androidx.compose.foundation.clickable\nimport androidx.compose.found"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/entries/anime/EpisodeOptionsDialogScreen.kt",
    "chars": 26228,
    "preview": "package eu.kanade.presentation.entries.anime\n\nimport androidx.compose.animation.AnimatedVisibility\nimport androidx.compo"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/entries/anime/EpisodeSettingsDialog.kt",
    "chars": 9634,
    "preview": "package eu.kanade.presentation.entries.anime\n\nimport androidx.compose.foundation.layout.Arrangement\nimport androidx.comp"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/entries/anime/SeasonSettingsDialog.kt",
    "chars": 13639,
    "preview": "package eu.kanade.presentation.entries.anime\n\nimport androidx.compose.foundation.layout.Column\nimport androidx.compose.f"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/entries/anime/components/AnimeEpisodeListItem.kt",
    "chars": 19696,
    "preview": "package eu.kanade.presentation.entries.anime.components\n\nimport androidx.compose.foundation.clickable\nimport androidx.co"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/entries/anime/components/AnimeImagesDialog.kt",
    "chars": 11126,
    "preview": "package eu.kanade.presentation.entries.anime.components\n\nimport android.graphics.Bitmap\nimport android.graphics.drawable"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/entries/anime/components/AnimeInfoHeader.kt",
    "chars": 25936,
    "preview": "package eu.kanade.presentation.entries.anime.components\n\nimport androidx.compose.animation.animateContentSize\nimport and"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/entries/anime/components/AnimeSeasonListItem.kt",
    "chars": 5420,
    "preview": "package eu.kanade.presentation.entries.anime.components\n\nimport androidx.compose.runtime.Composable\nimport androidx.comp"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/entries/anime/components/BaseAnimeListItem.kt",
    "chars": 2162,
    "preview": "package eu.kanade.presentation.entries.anime.components\n\nimport androidx.compose.foundation.clickable\nimport androidx.co"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/entries/anime/components/EpisodeDownloadIndicator.kt",
    "chars": 9178,
    "preview": "package eu.kanade.presentation.entries.anime.components\n\nimport androidx.compose.animation.core.animateFloatAsState\nimpo"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/entries/components/DotSeparatorText.kt",
    "chars": 460,
    "preview": "package eu.kanade.presentation.entries.components\n\nimport androidx.compose.material3.Text\nimport androidx.compose.runtim"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/entries/components/EntryBottomActionMenu.kt",
    "chars": 16879,
    "preview": "package eu.kanade.presentation.entries.components\n\nimport androidx.compose.animation.AnimatedVisibility\nimport androidx."
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/entries/components/EntryToolbar.kt",
    "chars": 7037,
    "preview": "package eu.kanade.presentation.entries.components\n\nimport androidx.compose.material.icons.Icons\nimport androidx.compose."
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/entries/components/ItemCover.kt",
    "chars": 1817,
    "preview": "package eu.kanade.presentation.entries.components\n\nimport androidx.compose.foundation.clickable\nimport androidx.compose."
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/entries/components/ItemHeader.kt",
    "chars": 2727,
    "preview": "package eu.kanade.presentation.entries.components\n\nimport androidx.compose.foundation.clickable\nimport androidx.compose."
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/entries/components/ItemsDialogs.kt",
    "chars": 6524,
    "preview": "package eu.kanade.presentation.entries.components\n\nimport androidx.compose.foundation.layout.BoxWithConstraints\nimport a"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/entries/components/MissingItemCountListItem.kt",
    "chars": 1768,
    "preview": "package eu.kanade.presentation.entries.components\n\nimport androidx.compose.foundation.layout.Arrangement\nimport androidx"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/entries/manga/ChapterSettingsDialog.kt",
    "chars": 9646,
    "preview": "package eu.kanade.presentation.entries.manga\n\nimport androidx.compose.foundation.clickable\nimport androidx.compose.found"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/entries/manga/DuplicateMangaDialog.kt",
    "chars": 4619,
    "preview": "package eu.kanade.presentation.entries.manga\n\nimport androidx.compose.foundation.clickable\nimport androidx.compose.found"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/entries/manga/MangaScreen.kt",
    "chars": 37318,
    "preview": "package eu.kanade.presentation.entries.manga\n\nimport androidx.activity.compose.BackHandler\nimport androidx.compose.anima"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/entries/manga/components/BaseMangaListItem.kt",
    "chars": 2162,
    "preview": "package eu.kanade.presentation.entries.manga.components\n\nimport androidx.compose.foundation.clickable\nimport androidx.co"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/entries/manga/components/ChapterDownloadIndicator.kt",
    "chars": 9153,
    "preview": "package eu.kanade.presentation.entries.manga.components\n\nimport androidx.compose.animation.core.animateFloatAsState\nimpo"
  },
  {
    "path": "app/src/main/java/eu/kanade/presentation/entries/manga/components/MangaChapterListItem.kt",
    "chars": 9991,
    "preview": "package eu.kanade.presentation.entries.manga.components\n\nimport androidx.compose.foundation.combinedClickable\nimport and"
  }
]

// ... and 1761 more files (download for full content)

About this extraction

This page contains the full source code of the aniyomiorg/aniyomi GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1961 files (13.7 MB), approximately 3.7M tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!