gitextract_40etbzh8/ ├── .gitignore ├── 123456 ├── LICENSE ├── README.md ├── app/ │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ ├── release/ │ │ ├── app-1-3-1.apk │ │ └── output-metadata.json │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ └── java/ │ └── com/ │ └── ke/ │ └── hs_tracker/ │ └── app/ │ ├── App.kt │ └── MainActivity.kt ├── build.gradle ├── core/ │ ├── .gitignore │ ├── build.gradle │ └── src/ │ └── main/ │ └── java/ │ └── com/ │ └── ke/ │ └── hs_tracker/ │ └── core/ │ ├── api/ │ │ └── HearthStoneJsonApi.kt │ ├── entity/ │ │ ├── BlockType.kt │ │ ├── Card.kt │ │ ├── CardClass.kt │ │ ├── CurrentDeck.kt │ │ ├── Entity.kt │ │ ├── GameCardType.kt │ │ ├── InsertStackResult.kt │ │ ├── LogType.kt │ │ ├── Mechanics.kt │ │ ├── NestedTag.kt │ │ ├── PowerTag.kt │ │ └── Zone.kt │ ├── extensions.kt │ └── parser/ │ ├── BlockTagStack.kt │ ├── DeckFileObserver.kt │ ├── PowerFileObserver.kt │ └── PowerParser.kt ├── gradle/ │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat ├── libs.versions.toml ├── module/ │ ├── .gitignore │ ├── build.gradle │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ ├── schemas/ │ │ └── com.ke.hs_tracker.module.db.Database/ │ │ ├── 1.json │ │ ├── 2.json │ │ ├── 3.json │ │ └── 4.json │ └── src/ │ ├── androidTest/ │ │ └── java/ │ │ └── com/ │ │ └── ke/ │ │ └── hs_tracker/ │ │ └── module/ │ │ └── ExampleInstrumentedTest.kt │ ├── main/ │ │ ├── AndroidManifest.xml │ │ ├── assets/ │ │ │ ├── Decks.log │ │ │ ├── Power.log │ │ │ └── log.config │ │ ├── java/ │ │ │ └── com/ │ │ │ └── ke/ │ │ │ └── hs_tracker/ │ │ │ └── module/ │ │ │ ├── MainApplication.kt │ │ │ ├── api/ │ │ │ │ └── HearthStoneJsonApi.kt │ │ │ ├── data/ │ │ │ │ └── PreferenceStorage.kt │ │ │ ├── db/ │ │ │ │ ├── CardClassesConvert.kt │ │ │ │ ├── CardDao.kt │ │ │ │ ├── Database.kt │ │ │ │ ├── Game.kt │ │ │ │ ├── GameDao.kt │ │ │ │ ├── MechanicsListConvert.kt │ │ │ │ ├── ZonePositionChangedEvent.kt │ │ │ │ └── ZonePositionChangedEventDao.kt │ │ │ ├── di/ │ │ │ │ ├── CoroutinesModule.kt │ │ │ │ ├── CoroutinesQualifiers.kt │ │ │ │ ├── LogFileDirQualifiers.kt │ │ │ │ └── Module.kt │ │ │ ├── domain/ │ │ │ │ ├── ClearCardTableUseCase.kt │ │ │ │ ├── GetAllCardUseCase.kt │ │ │ │ ├── GetCardListUseCase.kt │ │ │ │ ├── GetDatabaseCardCountUseCase.kt │ │ │ │ ├── GetLocalLogDirUseCase.kt │ │ │ │ ├── GetRealLogDirUseCase.kt │ │ │ │ ├── GetSaveLogFileEnableUseCase.kt │ │ │ │ ├── InsertCardListToDatabaseUseCase.kt │ │ │ │ ├── ParseDeckCodeUseCase.kt │ │ │ │ ├── SaveLogFileUseCase.kt │ │ │ │ ├── SetSaveLogFileEnableUseCase.kt │ │ │ │ └── WriteLogConfigFileUseCase.kt │ │ │ ├── entity/ │ │ │ │ ├── BlockType.kt │ │ │ │ ├── Card.kt │ │ │ │ ├── CardBean.kt │ │ │ │ ├── CardClass.kt │ │ │ │ ├── CardType.kt │ │ │ │ ├── CurrentDeck.kt │ │ │ │ ├── Entity.kt │ │ │ │ ├── EntityWithPayload.kt │ │ │ │ ├── EnumMoshiAdapter.kt │ │ │ │ ├── FormatType.kt │ │ │ │ ├── GameCardType.kt │ │ │ │ ├── GameEvent.kt │ │ │ │ ├── GameType.kt │ │ │ │ ├── GraveyardCard.kt │ │ │ │ ├── InsertStackResult.kt │ │ │ │ ├── LogType.kt │ │ │ │ ├── Mechanics.kt │ │ │ │ ├── NestedTag.kt │ │ │ │ ├── PowerTag.kt │ │ │ │ ├── Race.kt │ │ │ │ ├── Rarity.kt │ │ │ │ ├── SpellSchool.kt │ │ │ │ ├── Turn.kt │ │ │ │ ├── Zone.kt │ │ │ │ └── ZoneCard.kt │ │ │ ├── parser/ │ │ │ │ ├── BlockTagStack.kt │ │ │ │ ├── DeckCardObserver.kt │ │ │ │ ├── DeckFileObserver.kt │ │ │ │ ├── PowerFileObserver.kt │ │ │ │ ├── PowerParser.kt │ │ │ │ └── PowerTagHandler.kt │ │ │ ├── service/ │ │ │ │ ├── ItemViewTouchListener.kt │ │ │ │ ├── ScaleTouchListener.kt │ │ │ │ └── WindowService.kt │ │ │ └── ui/ │ │ │ ├── chart/ │ │ │ │ ├── GetSummaryChartViewDataUseCase.kt │ │ │ │ ├── PieChartData.kt │ │ │ │ ├── SummaryChartActivity.kt │ │ │ │ └── SummaryChartViewData.kt │ │ │ ├── classbattledetail/ │ │ │ │ ├── ClassBattleDetailActivity.kt │ │ │ │ ├── ClassBattleDetailViewModel.kt │ │ │ │ ├── ClassBattleItem.kt │ │ │ │ └── GetClassBattleItemListUseCase.kt │ │ │ ├── common/ │ │ │ │ ├── CardAdapter.kt │ │ │ │ └── LoadingFragment.kt │ │ │ ├── deck/ │ │ │ │ ├── DeckCodeParserActivity.kt │ │ │ │ └── DeckCodeParserViewModel.kt │ │ │ ├── deckbattledetail/ │ │ │ │ ├── BattleRecordsFragment.kt │ │ │ │ ├── BattleRecordsViewModel.kt │ │ │ │ ├── DeckBattleDetailActivity.kt │ │ │ │ ├── DeckDetailFragment.kt │ │ │ │ ├── DeckDetailViewModel.kt │ │ │ │ ├── DeckFragment.kt │ │ │ │ ├── DeckViewModel.kt │ │ │ │ ├── GetGamesByDeckCodeAndNameUseCase.kt │ │ │ │ ├── SummaryFragment.kt │ │ │ │ └── SummaryViewModel.kt │ │ │ ├── diagnose/ │ │ │ │ └── DiagnoseActivity.kt │ │ │ ├── filter/ │ │ │ │ └── FilterActivity.kt │ │ │ ├── main/ │ │ │ │ ├── CardListFragment.kt │ │ │ │ ├── DeckCardListFragment.kt │ │ │ │ ├── GraveyardFragment.kt │ │ │ │ ├── MainActivity.kt │ │ │ │ ├── MainViewModel.kt │ │ │ │ ├── OpponentGraveyardFragment.kt │ │ │ │ ├── OpponentHandCardsFragment.kt │ │ │ │ └── UserGraveyardFragment.kt │ │ │ ├── migrate/ │ │ │ │ ├── MigrateDataConvert.kt │ │ │ │ ├── MigrateMainActivity.kt │ │ │ │ ├── SocketClientActivity.kt │ │ │ │ └── SocketServerActivity.kt │ │ │ ├── permissions/ │ │ │ │ ├── PermissionsActivity.kt │ │ │ │ └── PermissionsViewModel.kt │ │ │ ├── records/ │ │ │ │ ├── RecordAdapter.kt │ │ │ │ ├── RecordsActivity.kt │ │ │ │ └── RecordsViewModel.kt │ │ │ ├── settings/ │ │ │ │ ├── SettingsActivity.kt │ │ │ │ └── SettingsViewModel.kt │ │ │ ├── splash/ │ │ │ │ ├── SplashActivity.kt │ │ │ │ └── SplashViewModel.kt │ │ │ ├── summary/ │ │ │ │ ├── BattleRateItem.kt │ │ │ │ ├── BattleRateItemAdapter.kt │ │ │ │ ├── BattleRateListFragment.kt │ │ │ │ ├── BattleRateListViewModel.kt │ │ │ │ ├── DeckBattleRateListViewModel.kt │ │ │ │ ├── GetDeckBattleRateListUseCase.kt │ │ │ │ ├── GetHeroBattleRateListUseCase.kt │ │ │ │ ├── HeroBattleRateListViewModel.kt │ │ │ │ ├── RateByDeckFragment.kt │ │ │ │ ├── RateByHeroFragment.kt │ │ │ │ └── SummaryActivity.kt │ │ │ ├── support/ │ │ │ │ └── SupportActivity.kt │ │ │ ├── sync/ │ │ │ │ ├── SyncCardDataActivity.kt │ │ │ │ └── SyncCardDataViewModel.kt │ │ │ ├── test/ │ │ │ │ ├── CreateRecordActivity.kt │ │ │ │ ├── LocalFileParserActivity.kt │ │ │ │ └── TestActivity.kt │ │ │ ├── theme/ │ │ │ │ └── ThemeActivity.kt │ │ │ ├── writeconfig/ │ │ │ │ └── WriteConfigActivity.kt │ │ │ ├── zonecards/ │ │ │ │ └── ZoneCardsActivity.kt │ │ │ └── zoneevents/ │ │ │ ├── ListModeFragment.kt │ │ │ ├── ZoneEventsActivity.kt │ │ │ └── ZoneEventsViewModel.kt │ │ └── res/ │ │ ├── color/ │ │ │ └── module_game_state.xml │ │ ├── drawable/ │ │ │ ├── module_baseline_arrow_back_white_24dp.xml │ │ │ ├── module_baseline_clear_black_24dp.xml │ │ │ ├── module_baseline_clear_red_500_24dp.xml │ │ │ ├── module_baseline_done_black_24dp.xml │ │ │ ├── module_baseline_done_green_500_24dp.xml │ │ │ ├── module_baseline_done_white_24dp.xml │ │ │ ├── module_baseline_drag_handle_white_24dp.xml │ │ │ ├── module_baseline_keyboard_arrow_right_grey_500_24dp.xml │ │ │ ├── module_baseline_pie_chart_white_24dp.xml │ │ │ ├── module_baseline_play_arrow_white_24dp.xml │ │ │ ├── module_baseline_settings_white_24dp.xml │ │ │ ├── module_baseline_sync_white_24dp.xml │ │ │ └── module_baseline_zoom_out_map_white_24dp.xml │ │ ├── drawable-xxxhdpi/ │ │ │ └── module_bg_splash.xml │ │ ├── layout/ │ │ │ ├── module_activity_class_battle_detail.xml │ │ │ ├── module_activity_create_record.xml │ │ │ ├── module_activity_deck_battle_detail.xml │ │ │ ├── module_activity_deck_code_parser.xml │ │ │ ├── module_activity_diagnose.xml │ │ │ ├── module_activity_filter.xml │ │ │ ├── module_activity_local_file_parser.xml │ │ │ ├── module_activity_main.xml │ │ │ ├── module_activity_migrate_main.xml │ │ │ ├── module_activity_permissions.xml │ │ │ ├── module_activity_records.xml │ │ │ ├── module_activity_settings.xml │ │ │ ├── module_activity_socket_client.xml │ │ │ ├── module_activity_socket_server.xml │ │ │ ├── module_activity_summary.xml │ │ │ ├── module_activity_summary_chart.xml │ │ │ ├── module_activity_support.xml │ │ │ ├── module_activity_sync_card_data.xml │ │ │ ├── module_activity_test.xml │ │ │ ├── module_activity_theme.xml │ │ │ ├── module_activity_write_config.xml │ │ │ ├── module_activity_zone_cards.xml │ │ │ ├── module_activity_zone_events.xml │ │ │ ├── module_dialog_card_preview.xml │ │ │ ├── module_floating_window.xml │ │ │ ├── module_fragment_card_list.xml │ │ │ ├── module_fragment_deck_battle_detail_deck_detail.xml │ │ │ ├── module_fragment_deck_battle_detail_summary.xml │ │ │ ├── module_fragment_graveyard.xml │ │ │ ├── module_fragment_list_mode.xml │ │ │ ├── module_fragment_loading.xml │ │ │ ├── module_fragment_opponent_hand_cards.xml │ │ │ ├── module_header_summary.xml │ │ │ ├── module_item_card.xml │ │ │ ├── module_item_chip_filter.xml │ │ │ ├── module_item_class_battle_detail.xml │ │ │ ├── module_item_footer_with_fab.xml │ │ │ ├── module_item_opponent_hand_card.xml │ │ │ ├── module_item_record.xml │ │ │ ├── module_item_summary_battle.xml │ │ │ ├── module_item_text.xml │ │ │ ├── module_item_zone_card.xml │ │ │ └── module_item_zone_event_list_mode.xml │ │ ├── values/ │ │ │ ├── arrays.xml │ │ │ ├── colors.xml │ │ │ ├── dimens.xml │ │ │ ├── strings.xml │ │ │ └── themes.xml │ │ ├── values-night/ │ │ │ └── themes.xml │ │ └── values-zh-rCN/ │ │ └── strings.xml │ └── test/ │ └── java/ │ └── com/ │ └── ke/ │ └── hs_tracker/ │ └── module/ │ └── ExampleUnitTest.kt ├── settings.gradle ├── shared/ │ ├── .gitignore │ ├── build.gradle │ └── src/ │ └── main/ │ └── java/ │ └── com/ │ └── ke/ │ └── hs/ │ └── shared/ │ └── entity/ │ └── CardType.kt ├── simulator/ │ ├── .gitignore │ ├── build.gradle │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src/ │ ├── androidTest/ │ │ └── java/ │ │ └── com/ │ │ └── ke/ │ │ └── hs/ │ │ └── simulator/ │ │ └── ExampleInstrumentedTest.kt │ ├── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── ke/ │ │ └── hs/ │ │ └── simulator/ │ │ └── cards/ │ │ └── base/ │ │ ├── HeroCard.kt │ │ ├── ICard.kt │ │ ├── MinionCard.kt │ │ ├── SpellCard.kt │ │ └── WeaponCard.kt │ └── test/ │ └── java/ │ └── com/ │ └── ke/ │ └── hs/ │ └── simulator/ │ └── ExampleUnitTest.kt └── writer/ ├── .gitignore ├── build.gradle ├── proguard-rules.pro ├── release/ │ ├── output-metadata.json │ └── writer-release.apk └── src/ ├── androidTest/ │ └── java/ │ └── com/ │ └── ke/ │ └── hs/ │ └── writer/ │ └── ExampleInstrumentedTest.kt ├── main/ │ ├── AndroidManifest.xml │ └── res/ │ ├── drawable/ │ │ └── ic_launcher_background.xml │ ├── drawable-v24/ │ │ └── ic_launcher_foreground.xml │ ├── mipmap-anydpi-v26/ │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ ├── values/ │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── themes.xml │ └── values-night/ │ └── themes.xml └── test/ └── java/ └── com/ └── ke/ └── hs/ └── writer/ └── ExampleUnitTest.kt